पर सॉर्ट नहीं करता है, मैं एक एमवीवीएम डिज़ाइन पैटर्न का उपयोग करके अपना पहला WPF एप्लिकेशन लागू करने की कोशिश कर रहा हूं।WPF4 डेटाग्रिड कॉलम हेडर
मैंने एक ऐसा ऐप्लिकेशन बनाया जो एक पर्यवेक्षण योग्यता <> पर डाटाबेसिंग कर रहा है। एप्लिकेशन ठीक प्रस्तुत करता है, लेकिन जब मैं कॉलम हेडर पर क्लिक करता हूं तो डेटाग्रिड पंक्तियों को फिर से क्रमबद्ध करने की अपेक्षा करता है।
मैंने उन पदों पर शोध किया है जिन्होंने कहा: डेटा स्रोत को IENumerable को लागू करना है, मेरा करता है। मुझे CanUserSortColumns और/या CanUserSort (प्रत्येक कॉलम पर) सेट करने की आवश्यकता है, मैंने किया था। मैं सॉर्टिंग कॉलबैक फ़ंक्शन निर्दिष्ट करके कस्टम प्रकार को कार्यान्वित कर सकता हूं, मैंने किया था।
इनमें से कोई भी मदद नहीं करता है। डीबगर में, मेरे _customerGrid_Sorting फ़ंक्शन को कभी भी कॉल नहीं किया जाता है और कॉलम हेडर पर क्लिक करने का कोई प्रभाव नहीं पड़ता है।
क्या मुझे XAML में कुछ याद आ रहा है? क्या कोई अन्य इंटरफ़ेस लागू करने की आवश्यकता है? मुझे अभी बहुत खो गया है, इसलिए किसी भी मदद की सराहना की जाती है।
XAML:
<DataGrid Name="_customerGrid"
AutoGenerateColumns="False"
CanUserSortColumns="True"
ColumnHeaderStyle="{StaticResource columnHeaderStyle}"
HorizontalAlignment="Left"
ItemsSource="{Binding Path=AllCustomers}"
RowDetailsVisibilityMode="VisibleWhenSelected"
RowStyle="{StaticResource DataGridRowStyle}"
SelectionUnit="FullRow"
Sorting="_customerGrid_Sorting"
VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Cust ID" MinWidth="90" CanUserSort="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=CustID}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Name" MinWidth="300" CanUserSort="True" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding Path=Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
धन्यवाद गुरु, जो थोड़ा सा मदद करता है। कम से कम मुझे पता है कि डिफ़ॉल्ट प्रकार का व्यवहार क्यों काम नहीं करता है।मैं इसे लेता हूं इसका मतलब है कि मुझे कस्टम प्रकार को लागू करने की आवश्यकता है। मैंने सोचा कि मैं डेटाग्रिड के सॉर्टिंग विशेषता में एक हैंडलर निर्दिष्ट करके कर सकता हूं। लेकिन मेरा हैंडलर आग नहीं लगाता है। मुझे और दिशा देने के लिए मैं आपका कोड नमूना प्राप्त करने की आशा करता हूं। –
@ पॉल - मुझे लगता है कि आप "SortMemberPath" नामक एक विशेषता खो रहे थे। आशा करता हूँ की ये काम करेगा!! – GuruC
महान उत्तर गुरु! आपके सहयोग के लिए धन्यवाद! मैं डेटाग्रिड टेम्पलेट कॉलम पर SortMemberPath = "CustID" (उदाहरण के लिए) निर्दिष्ट करके जोड़ दूंगा, मैं डेटाग्रिड पर सॉर्टिंग विशेषता को खत्म करने और आईसीओएमपेयर के अपने कस्टम कार्यान्वयन को हटाने में सक्षम था। मैं आपका जवाब दूसरों की मदद करता हूं। अगर किसी के पास समाधान के बारे में कोई सवाल है, तो मैं उनकी मदद करने की कोशिश करूंगा। –