2012-11-29 48 views
11

मेरे पास कई कॉलम के साथ डेटाग्रिड है।डब्ल्यूपीएफ डाटाग्रिड कॉलम चौड़ाई ऑटो और स्क्रॉलबार

मुझे Width="Auto" स्क्रॉलबार के साथ सभी स्तंभों की तुलना में विंडो को संकुचित करने के साथ सबकुछ दिखा रहा है। यदि खिड़की व्यापक है तो मैं खाली जगह खाली करने के लिए कॉलम चाहता हूं इसलिए कोई मृत स्थान नहीं है।

असल में मैं स्तंभ न्यूनतम न्यूनतम चौड़ाई पूरी तरह से सामग्री या शीर्षलेख फिट करना चाहता हूं। और खिड़की चौड़ा होने पर बड़ा विस्तार करें।

+0

आप पोस्ट कर सकते हैं क्या आप अब तक है XAML? –

+0

यदि चौड़ाई ऑटो पर सेट है, तो स्क्रॉलबार कभी प्रकट नहीं होता है। –

+0

@EduardoBrites अधिक स्पष्टीकरण – Brent

उत्तर

8

XAML में

dataGrid.Loaded += (s, e) => { // Column widths 
    dataGrid.Columns.AsParallel().ForEach(column => { 
     column.MinWidth = column.ActualWidth; 
     column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
    }); 
}; 

जोड़ने के लिए एक कस्टम डेटा ग्रिड के साथ इस का उपयोग करते हुए डेटा ग्रिड ColumnWidth="Auto"

सेट UserControl निर्माता में और अच्छा काम करता है।

+0

के उत्तर के रूप में पोस्ट करूंगा, आप TextRenderer.MeasureText प्रॉपर्टी को भी देख सकते हैं और इसके बराबर मिनीविड्थ सेट कर सकते हैं। –

+0

-1 मानक WPF और .NET 4.5 के साथ संकलित नहीं होगा; यह कहने के लिए ज्यादा उपयोग नहीं है कि यह ** कस्टम ** ** डेटाग्रिड ** के साथ काम करता है यदि कोड – MickyD

+2

-1 प्रदान नहीं किया गया है तो भी ** AsParallel() ** आमतौर पर जीयूआई तत्वों से निपटने पर एक बड़ी संख्या नहीं है – MickyD

22

आदेश WPF DataGrid में सभी क्षैतिज स्थान "भरने" के रूप में आपके द्वारा निर्दिष्ट, सुनिश्चित करें कि आप इन गुणों XAML में सेट कर में:

<DataGrid 
    HorizontalAlignment="Stretch" 
    HorizontalContentAlignment="Stretch" 
    ColumnWidth="*" /> 
+2

कॉलमविड्थ = "*" बहुत अच्छा काम करता है :) –

+2

यह समाधान ग्रिड को क्षैतिज स्क्रॉलबार प्राप्त करने से रोकता है जब यह सभी स्तंभों की सामग्री को फिट करने के लिए पर्याप्त नहीं है। – dlf

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^