wpf - 如何在 WPF DataGrid 中将 XML 文件中的文本排序为数字?

标签 wpf sorting datagrid

我的 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/

相关文章:

c# - 按 desc 或 asc 对列表进行排序,具体取决于当前列表的内容

java - 如何高效地在java中实现这个scala操作

reactjs - MUI - 在 DataGrid 中禁用多行选择

.net - 是否可以禁用 WPF 中的单个列表框项目?

wpf - 为什么每次调整 WPF 窗口大小时都会出现黑色延迟?

linux - 两个文件中的唯一值

wpf - 在 WPF DataGrid RowHeader 中显示流水号

c# - WPF 数据网格 : IsVirtualizingWhenGrouping ="True" not working

c# - 在 WPF 中将 DataSet 绑定(bind)到 DataGrid

c# - UserControl 属性绑定(bind)不更新 DataContext