gpt4 book ai didi

c# - 为 xaml 中的第一列启用 DataGrid 排序

转载 作者:行者123 更新时间:2023-12-03 10:54:39 24 4
gpt4 key购买 nike

我在 WPF 中有一个带有自动生成列的 DataGrid。

如何禁用所有行的排序功能,除了第一个对应于我的源中时间的行。

我遵循 MVVM 模式,我知道 CanUserSortColumns 正在禁用所有列的排序。我想禁用除第一列之外的所有内容。

我应该写触发器还是交互或其他东西?感谢所有帮助。

<DataGrid AutoGenerateColumns="True" 
ItemsSource="{Binding MyDataTable}"
CanUserSortColumns="False">
</DataGrid>

最佳答案

我找到了这个代码 snippet为你:

<my:DataGridTemplateColumn  SortMemberPath="CompleteDate" Header="Complete Date" CanUserSort="true">
<my:DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="{}{0:MM/dd/yyyy}"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>

使用 CanUserSort 属性来明确定义它的可排序状态列。 SortMemberPath 定义用于排序的属性。希望这可以帮助。

更新:
如果您使用的是自动生成的列,则无法通过 xaml 访问它们。所以你需要在代码文件中访问它们。

我不熟悉 xaml Grid,但会期望类似:
//Bound Data here so that the Grid generate the columns

int i = 0;
foreach (DataColumn column in myGrid.ColumnCollection)
{
if (i == 0)
column.CanSortUser = true;
else
column.CanSortUser = false;

i++;
}

原始类型名称可能不同,但这种方式应该是可能的。

更新 2

如果您不想伤害 MVVM,可以使用 this .描述了如何使用接口(interface)访问代码并与您的 View 和 View 模型保持独立。

关于c# - 为 xaml 中的第一列启用 DataGrid 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40122970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com