डब्ल्यूपीएफ के डेटाग्रिड नियंत्रण में, यदि आप डिफ़ॉल्ट स्तंभ प्रकारों (जैसे डेटाग्रिडटेक्स्ट कॉलम या डेटाग्रिड चेकबॉक्स कॉलम) में कॉलम सेट करते हैं, तो उस कॉलम पर सॉर्ट करें, और उसके बाद उसका मान बदलें, ग्रिड स्वचालित रूप से फिर से क्रमबद्ध किया जाएगा।डब्ल्यूपीएफ डाटाग्रिड: डेटाग्रिड टेम्पलेट कॉलम पर स्वचालित रूप से फिर से सॉर्ट करें
हालांकि, यदि आप डेटाग्रिड टेम्पलेट कॉलम (और कॉलम को सॉर्ट करने की अनुमति देते हैं) का उपयोग करते हैं, तो इसे सॉर्ट किया जा सकता है, लेकिन इस कॉलम में किसी सेल के मान को बदलने से ग्रिड को फिर से क्रमबद्ध नहीं किया जाता है। मैं इसे फिर से क्रमबद्ध करने में स्वचालित रूप से कैसे संयोजित कर सकता हूं?
XAML:
<DataGrid Name="grid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="First name" Binding="{Binding First}"/>
<DataGridTemplateColumn Header="Last name" SortMemberPath="Last">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Last}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
बाइंडिंग:
ObservableCollection items = new ObservableCollection();
grid.ItemsSource = items;
items.Add(new Character() { First = "Homer", Last = "Simpson" });
items.Add(new Character() { First = "Kent", Last = "Brockman" });
items.Add(new Character() { First = "Montgomery", Last = "Burns" });
यहाँ, अपने मद वर्ग बस मामला है कि प्रासंगिक है में:
public class Character : INotifyPropertyChanged {
private string first, last;
public event PropertyChangedEventHandler PropertyChanged;
private void Notify(string name) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public string First { get { return first; } set { first = value; Notify("First"); } }
public string Last { get { return last; } set { last = value; Notify("Last"); } }
}
मेरे लिए ठीक काम कर रहा हो रहा है। क्या आपका मतलब है कि आप DataGridTemplateColumn के लिए SortMemberPath मान बदलते हैं? –
यह तब होता है जब आप इसे स्पष्ट रूप से क्लिक करते हैं, या जब आप फर्स्टनाम कॉलम का मान बदलते हैं, लेकिन जब आप LastName कॉलम मान बदलते हैं तो पुन: क्रमबद्ध नहीं होता है। SortMemberPath को सेट करने से यह सॉर्ट करने की अनुमति मिलती है, लेकिन यह स्वचालित रूप से * फिर से क्रमबद्ध नहीं होती है, इसलिए समस्या। –
इस स्थिति में मैंने एक आवश्यक संपत्ति के परिवर्तनों को देखा और कुछ कोलेक्शनव्यूऑफग्रिड.रफ्रेश() कहा; – vorrtex