【发布时间】:2015-07-26 00:07:06
【问题描述】:
我有一个 DataGrid,其中包含一个由 StackPanel 中的 2 个不同可排序项共享的列。
这些项目都用于 NameA/NameB,而我想要的是 SortMemberPath 根据名为“sortByNameB”的布尔值的状态在这两者之间进行更改。
我在想的是使用带有静态资源的转换器来检查 sortByNameB 的状态,然后将某些内容返回给 SortMemberPath.. 但我不确定应该返回什么?我尝试将字符串返回为“NameA”/“NameB”,但这只是破坏了排序。
相关 XAML:
<DataGridTemplateColumn Header="Names" SortMemberPath="{Binding Converter={StaticResource NameSort}}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<TextBlock Padding="1" HorizontalAlignment="Center">
<Hyperlink NavigateUri="{Binding Path=NameA}" RequestNavigate="Name_RequestNavigate">
<TextBlock Text="{Binding Path=NameA}" Foreground="{Binding RelativeSource={RelativeSource Self}, Path=Text, Converter={StaticResource FGName}}"/>
</Hyperlink>
</TextBlock>
<TextBlock Padding="1" HorizontalAlignment="Center">
<Hyperlink NavigateUri="{Binding Path=NameA}" RequestNavigate="Name_RequestNavigate">
<TextBlock Text="{Binding Path=NameB}" Foreground="{Binding RelativeSource={RelativeSource Self}, Path=Text, Converter={StaticResource FGName}}"/>
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
转换器:
public class NameSort : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return (ToolView.sortByNameB) ? "NameB" : "NameA";
}
}
【问题讨论】:
标签: c# wpf sorting datagrid converter