【问题标题】:How to sort text from XML file as number in WPF DataGrid?如何将 XML 文件中的文本排序为 WPF DataGrid 中的数字?
【发布时间】:2012-02-06 13:40:46
【问题描述】:

我的 DataGrid 的内容(例如,产品和价格)是从 XML 文件加载的,并且在按 DataGrid 排序时,所有内容都被视为文本。

如何告诉 DataGrid 在排序时将价格视为数字?谢谢。

这是相关的 XAML(后面没有代码)。我想将长度排序为数字:

 <DataGridTemplateColumn Header="Length" SortMemberPath="Length" Width="100">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock TextAlignment="Right" VerticalAlignment="Center"  Text="{Binding XPath=Length}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

【问题讨论】:

  • 展示你的代码总比文字好。

标签: wpf sorting datagrid


【解决方案1】:

您可以将转换器添加到您的绑定中。 第 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>

【讨论】:

    【解决方案2】:

    没有代码,这只是一个猜测,但我假设您正在对一个对象进行 xml 反序列化,该对象被放入一个列表中,然后您的数据网格被绑定到该列表。如果您将列表类中的价格数据字段设置为 int,则 datagrid 会将其视为数字。

    【讨论】:

    • 不,在后面的代码中没有进行任何序列化。添加到问题的 XAML 文件中的所有内容都只是声明性的。
    猜你喜欢
    • 2014-03-08
    • 2014-04-09
    • 2015-06-28
    • 2011-09-18
    • 2014-01-01
    • 1970-01-01
    • 2011-10-08
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多