मैं उन अनुप्रयोगों में से एक में डब्ल्यूपीएफ टूलकिट डाटाग्रिड का उपयोग कर रहा हूं, जिन पर मैं काम कर रहा हूं। मैं चाहता हूं कि कॉलम चौड़ाई और डिस्प्लेइन्डेक्स को उपयोगकर्ता वरीयता के रूप में स्टोर करना है। मैंने इसे कॉलम डिस्प्लेन्डेक्स के लिए प्राप्त किया है लेकिन आकार बदलने के लिए मुझे डेटाग्रिड पर कोई भी ईवेंट नहीं मिला जो स्तंभ आकार परिवर्तन के बाद ट्रिगर होगा। मैंने "साइज चेंजेड" ईवेंट की कोशिश की है जो मुझे लगता है कि जब यह प्रारंभ में आकार की गणना कर रहा है तो वह केवल निकाल दिया जाता है और यह भी पूरे डेटाग्रिड के लिए है, न कि व्यक्तिगत कॉलम के लिए।
कोई वैकल्पिक समाधान या यदि कोई घटना के बारे में जानता है?डब्ल्यूपीएफ टूलकिट डेटाग्रिड कॉलम का आकार बदलें
उत्तर
आप DataGrid
को विस्तारित करने और फिर NotifyPropertyChange
ईवेंट को लागू करने का प्रयास कर सकते हैं। कुछ इस तरह:
class MyDataGrid : DataGrid, INotifyPropertyChanged
{
private DataGridLength _columnWidth;
public DataGridLength ColumnWidth
{
get { return _columnWidth; }
set
{
_columnWidth = value;
NotifyPropertyChanged("ColumnWidth");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
वहाँ से, आप हैंडलर के लिए एक delagate जोड़ने जो कुछ भी आप यह करना चाहते हैं कर सकते हैं। की तरह कुछ:
MyDataGrid dataGrid;
//init grid, do stuff
dataGrid.PropertyChanged += new PropertyChangedEventHandler(ColumnWidthChanged);
//ColumnWidthChanged will be a method you define
अब आप delagate है तो आप उसे आप क्या चाहते हो जब स्तंभ चौड़ाई परिवर्तित हो जाता है परिभाषित कर सकते हैं:
private void ColumnWidthChanged(object sender, PropertyChangedEventArgs args)
{
if(args.PropertyName.Equals("ColumnWidth"))
{
//Do stuff now that the width is changed
}
}
आपको लगता है कि मैं जो के लिए जाँच कर रहा हूँ पर ध्यान देंगे संपत्ति बदल दी गई थी। जिस तरह से मैंने इसे स्थापित किया है, ऐसा है कि आप अन्य गुणों का विस्तार कर सकते हैं और हैंडलर को भी उनके बदलाव के लिए बना सकते हैं। यदि आप एक हैंडलर को और अधिक चाहते हैं, तो शायद DataGridPropertyChanged
विधि बनाने के लिए सबसे अच्छा होगा जो उस संपत्ति पर स्विच करता है जिस पर संपत्ति बदल दी गई थी। इसके बाद यह बदली जाने वाली प्रत्येक संपत्ति के लिए उपयुक्त विधि (जैसे ColumnWidthChanged
) को कॉल करेगा। इस तरह, आपको यह जांचना नहीं होगा कि प्रत्येक हैंडलर केवल एक संपत्ति को संशोधित करता है।
आपने कोई भाषा निर्दिष्ट नहीं की है, इसलिए मैंने इसे सी # पर फिर से टैग किया। हालांकि, अगर आप इसका उपयोग कर रहे हैं तो वीबी को स्थानांतरित करने के लिए यह काफी सरल होना चाहिए।
आशा है कि इससे मदद मिलती है!
मुझे लगता है कि आप कॉलम चौड़ाई को सहेजना चाहते हैं ताकि अगली बार एप्लिकेशन शुरू हो जाए, उसी कॉलम चौड़ाई का उपयोग डेटा ग्रिड उत्पन्न करने के लिए किया जाता है।
यदि ऐसा है तो आवेदन बंद होने पर कॉलम चौड़ाई (और इंडेक्स) को सहेजना एक विकल्प है, जो कॉलम का आकार बदलने पर चौड़ाई को बचाने से भी अधिक कुशल होगा।
कैसे अपने आवेदन संरचित है के आधार पर, कुछ इस तरह काम करना चाहिए ...
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
foreach (DataGridColumn column in dataGrid1.Columns)
{
// save the column.Width property to a user setting/file/registry/etc...
// optionally save the displayindex as well...
}
}
हाय, क्या आप कृपया मुझे कुछ संकेत दे सकते हैं कि मूल्य को C# से xaml में कैसे कॉपी करें? मैंने यह कोशिश की है: शब्दकोश
से ... लिया:
PropertyDescriptor pd = DependencyPropertyDescriptor
.FromProperty(DataGridColumn.ActualWidthProperty,
typeof(DataGridColumn));
foreach (DataGridColumn column in Columns) {
//Add a listener for this column's width
pd.AddValueChanged(column,
new EventHandler(ColumnWidthPropertyChanged));
}
:
http://forums.silverlight.net/post/602788.aspx
लोड के बाद
2 विधियां:
private bool _columnWidthChanging;
private void ColumnWidthPropertyChanged(object sender, EventArgs e)
{
// listen for when the mouse is released
_columnWidthChanging = true;
if (sender != null)
Mouse.AddPreviewMouseUpHandler(this, BaseDataGrid_MouseLeftButtonUp);
}
void BaseDataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_columnWidthChanging) {
_columnWidthChanging = false;
// save settings, etc
}
}
कॉलमविड्थप्रोपर्टी लगातार चलती है जबकि उपयोगकर्ता चौड़ाई को ड्रैग करता है। PreviewMouseUp हैंडलर जोड़ना आपको उपयोगकर्ता द्वारा किए जाने पर संसाधित करने देता है।
लेआउट अपडेट किया गया?
मैं सिल्वरलाइट में काम कर रहा हूं, और ग्रिड हर सेकेंड को रिबाउंड/रीफ्रेश किया जाता है।
मैं लेआउट अपडेटेड विधि का उपयोग कर रहा हूं, जो हर लेआउट अद्यतन करने की घटना के लिए आग लगती है।
आप कॉलम चौड़ाई का शब्दकोश रख सकते हैं और डेल्टा की जांच कर सकते हैं। फिर आप जान लेंगे कि कौन सा कॉलम बदल गया था।
foreach (DataGridColumn column in dataGrid1.Columns)
{
// check for changes...
// save the column.Width property to a dictionary...
}
- 1. डब्ल्यूपीएफ टूलकिट डेटाग्रिड सेल टेक्स्ट रैपिंग
- 2. डब्ल्यूपीएफ टूलकिट। डेटाग्रिड कॉलम हैडर को डायनामिक रिसोर्स
- 3. डब्ल्यूपीएफ टूलकिट डेटाग्रिड शो फ़ील्ड भी झूठी
- 4. फोर्स डेटाग्रिड कॉलम सत्यापन (डब्ल्यूपीएफ)
- 5. डब्ल्यूपीएफ टूलकिट डाटाग्रिड - कस्टम टैब्बिंग
- 6. क्या एक डब्ल्यूपीएफ टूलकिट डेटाग्रिड हाइपरलिंक कॉलम के साथ कमांड को जोड़ने का कोई तरीका है?
- 7. सी # डेटाग्रिड व्यू के आकार का ऑटो आकार बदलें
- 8. QTableWidget कॉलम आकार बदलें
- 9. डब्ल्यूपीएफ टूलकिट चार्ट
- 10. डब्ल्यूपीएफ डेटाग्रिड: कॉलम सॉर्टिंग साफ़ करें
- 11. डब्ल्यूपीएफ टूलकिट डेटाग्रिड मल्टी-सिलेक्ट: सिलेक्ट इटम्स कैसे प्राप्त करें?
- 12. मैं डब्ल्यूपीएफ टूलकिट डाटाग्रिड
- 13. डेटाग्रिड चेकबॉक्स कॉलम तत्काल बाध्यकारी
- 14. डब्ल्यूपीएफ: डेटाग्रिड
- 15. डब्ल्यूपीएफ डेटाग्रिड टेम्पलेट कॉलम का आकार बदलने की क्षमता हटा देता है
- 16. डब्ल्यूपीएफ डेटाग्रिड पंक्ति सत्यापन
- 17. डब्ल्यूपीएफ सूचीदृश्य/ग्रिडप्लिटर/स्क्रोलव्यूज़र समस्या का आकार बदलें
- 18. डब्ल्यूपीएफ एमवीवीएम डाटाग्रिड डायनामिक कॉलम
- 19. डब्ल्यूपीएफ - रनटाइम पर वैश्विक फ़ॉन्ट आकार बदलें
- 20. डब्ल्यूपीएफ डेटाग्रिड और टैब कुंजी
- 21. WPF टूलकिट नियंत्रण (विशेष रूप से डेटाग्रिड)
- 22. डब्ल्यूपीएफ टूलकिट - चार्ट एनीमेशन को निष्क्रिय करें
- 23. स्ट्रिंग लंबाई के लिए जेटीबल कॉलम का आकार कैसे बदलें?
- 24. डेटाग्रिड गणना कॉलम
- 25. डेटाग्रिड व्यू चेकबॉक्स कॉलम
- 26. WPF4 डेटाग्रिड कॉलम हेडर
- 27. बाध्यकारी डेटाग्रिड कॉलम चौड़ाई
- 28. यूआईएसटेपर का आकार बदलें?
- 29. डब्ल्यूपीएफ टूलकिट डाटाग्रिड - आप चयन कैसे बंद करते हैं?
- 30. जीडब्ल्यूटी डेटाग्रिड आकार
यह वास्तव में मदद नहीं करता है क्योंकि आप केवल एक ही स्तंभ चौड़ाई मिल गया है और यदि स्तंभ कोड में आकार दिया गया था आपके घटना केवल उठाया जाएगा, कुछ तुम जाल वैसे भी कर सकते थे। – MikeKulls