Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF数据网格赢得';尽管设置了CanUserSort和SortMemberPath,但仍不能进行排序_C#_Wpf_Datagrid - Fatal编程技术网

C# WPF数据网格赢得';尽管设置了CanUserSort和SortMemberPath,但仍不能进行排序

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

我有一个DataGrid,其中ItemSource设置为一个对象数组。模板列设置为一个复选框,该复选框绑定到布尔值IsChecked,其余列是设置为字符串的文本列。尽管在文本列上设置了SortMemberPath和CanUserSort,我仍然无法对标题中的任何列进行排序。有什么想法吗?提前谢谢

ItemSource对象

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集合。对不起,我开始觉得痒了。。。