我的 DataGrid 的内容(例如 Product 和 Price)是从 XML 文件加载的,当 DataGrid 排序时,所有内容都被视为文本。
如何让DataGrid在排序时将Price作为数字来处理?谢谢。
这是相关的 XAML(后面没有代码)。我想将长度排序为数字:
<DataGridTemplateColumn Header="Length" SortMemberPath="Length" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Right" VerticalAlignment="Center" Text="{Binding XPath=Length}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
最佳答案
您可以将转换器添加到您的绑定(bind)。 第 1 步:创建转换器类。
[ValueConversion(typeof(string), typeof(int))]
public class StringToIntConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Int32.Parse(value.ToString());
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString();
}
}
稍微验证一下可能是可取的,但这只是一个基本的例子。
第 2 步:实例化转换器。确保将命名空间声明添加到 Xaml。
<Window.Resources>
<StringToIntConverter x:Name="stringToInt"/>
</Window.Resources>
第三步:使用它
<DataGridTemplateColumn Header="Length" SortMemberPath="Length" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextAlignment="Right" VerticalAlignment="Center" Text="{Binding XPath=Length, Converter={StaticResource stringToInt}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
关于wpf - 如何在 WPF DataGrid 中将 XML 文件中的文本排序为数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798282/