C# WPF数据网格赢得';尽管设置了CanUserSort和SortMemberPath,但仍不能进行排序
我有一个DataGrid,其中ItemSource设置为一个对象数组。模板列设置为一个复选框,该复选框绑定到布尔值IsChecked,其余列是设置为字符串的文本列。尽管在文本列上设置了SortMemberPath和CanUserSort,我仍然无法对标题中的任何列进行排序。有什么想法吗?提前谢谢 ItemSource对象C# WPF数据网格赢得';尽管设置了CanUserSort和SortMemberPath,但仍不能进行排序,c#,wpf,datagrid,C#,Wpf,Datagrid,我有一个DataGrid,其中ItemSource设置为一个对象数组。模板列设置为一个复选框,该复选框绑定到布尔值IsChecked,其余列是设置为字符串的文本列。尽管在文本列上设置了SortMemberPath和CanUserSort,我仍然无法对标题中的任何列进行排序。有什么想法吗?提前谢谢 ItemSource对象 public class MyAllergy { public string Allergen { get; set; } public string Alle
public class MyAllergy
{
public string Allergen { get; set; }
public string AllergenType { get; set; }
public string AllergyType { get; set; }
public string Reactions { get; set; }
public string TouchedWhen { get; set; }
public Boolean IsChecked { get; set; }
public Boolean IsEnabled { get; set; }
public string ApplicationSourceName { get; set; }
public string AllergyCategory { get; set; }
public string ConfidenceLevel { get; set; }
public PartialDate OnsetDate { get; set; }
public string Status { get; set; }
public string CreatedWhen { get; set; }
public string InformationSource { get; set; }
public string Text { get; set; }
public string ConfirmedBy { get; set; }
public long AllergyGUID { get; set; }
}
XAML
<DataGrid AlternatingRowBackground="#FFCDDAEB" AutoGenerateColumns="False" Background="White" Height="160" HorizontalAlignment="Stretch" Margin="18,355,6,0" Name="dgUnityAllergies" VerticalAlignment="Top" Width="704" CanUserAddRows="false" FontSize="12">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox x:Name="all" Click="SelectAllCheckBox_Click" IsChecked="{Binding IsChecked}"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding IsEnabled}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn CanUserSort="True" Header="Category" Width ="Auto" Binding="{Binding AllergyCategory}" IsReadOnly="True" SortMemberPath="AllergyCategory"/>
<DataGridTextColumn CanUserSort="True" Header="Type" Width ="Auto" Binding="{Binding AllergenType}" IsReadOnly="True" SortMemberPath="AllergenType"/>
<DataGridTextColumn CanUserSort="True" Header="Allergen" Width ="Auto" Binding="{Binding Allergen}" IsReadOnly="True" SortMemberPath="Allergen"/>
<DataGridTextColumn CanUserSort="True" Header="Campus" Width ="Auto" Binding="{Binding ApplicationSourceName}" IsReadOnly="True" SortMemberPath="ApplicationSourceName"/>
<DataGridTextColumn CanUserSort="True" Header="Reactions" Width ="*" Binding="{Binding Reactions}" IsReadOnly="True" SortMemberPath="Reactions"/>
<DataGridTextColumn CanUserSort="True" Header="Entered On" Width ="Auto" Binding="{Binding TouchedWhen}" IsReadOnly="True" SortMemberPath="TouchedWhen"/>
</DataGrid.Columns>
</DataGrid>
确保实际数据网格上的CanUserSortColumns属性设置为true 确保实际数据网格上的CanUserSortColumns属性设置为true 您可以发布更多关于您的itemssource的代码吗?请尝试删除SortMemberPath=“AllergyCategory
等。由于默认情况下DataGrid具有此功能,我添加了对象架构。很遗憾,删除SortMemberPath无效。您的ItemsSource
属性在DataGrid中的何处?它是应用程序背后的代码吗?@thunderchunky如果我绑定ItemsSource,您的代码对我有效,并具有排序功能。尝试在viewmodel上将Allergies
集合设置为属性,并将其绑定到XAML中的DataGrid.ItemsSource。如果在viewmodel上实现了INotifyPropertyChanged
,并在Allergies
更改时正确触发通知,则可以通过将不同的集合分配给Allergies
来交换Allergies集合。对不起,我开始觉得痒…你能发布更多关于你的itemssource的代码吗?尝试删除SortMemberPath=“AllergyCategory
等。由于默认情况下DataGrid具有此功能,我添加了对象架构。很遗憾,删除SortMemberPath无效。您的ItemsSource
属性在DataGrid中的何处?它是应用程序背后的代码吗?@thunderchunky如果我绑定ItemsSource,您的代码对我有效,并具有排序功能。尝试在viewmodel上将Allergies
集合设置为属性,并将其绑定到XAML中的DataGrid.ItemsSource。如果在viewmodel上实现了INotifyPropertyChanged
,并在Allergies
更改时正确触发通知,则可以通过将不同的集合分配给Allergies
来交换Allergies集合。对不起,我开始觉得痒了。。。