Как отсортировать текст из файла XML по номеру в WPF DataGrid? - PullRequest
3 голосов
/ 10 января 2012

Содержимое моей 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>

Ответы [ 2 ]

4 голосов
/ 10 января 2012

Вы можете добавить конвертер для вашей привязки. Шаг 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>

Step3: используйте его

<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>
1 голос
/ 10 января 2012

Без кода это только предположение, но я предполагаю, что вы выполняете десериализацию xml в объект, который помещается в список, а затем ваша сетка данных связывается со списком. Если вы сделаете поле данных цены в классе списка целым числом, сетка данных будет рассматривать его как число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...