将绑定属性类型从字符串更改为int

时间:2013-04-10 19:15:58

标签: c# wpf binding datagrid converter

我正在尝试将几个列的绑定属性从字符串更改为int,因为它们是从文件中读取的,我希望在数据最终显示在屏幕上时使用数字排序。

我创建了这个转换器,并在XAML文件中进行了相应的更改,以在DataTemplate标记中实现转换器,但我仍然在输出中进行字符串排序,而不是数字排序。

我四处寻找类似转换器的其他版本,但没有发现任何相关内容。我不确定转换器的问题是什么。

这是我的转换器:

public class IntToStringConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is string)
        {
            string s = (string)value;
            int num;
            if (int.TryParse(s, out num))
                return num;
        }
        return 0;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        int number = (int)value;
        return number.ToString();
    }
}

这些是XAML中所做的更改。本地namespaceWindows.Resources中定义。

<me:IntToStringConverter x:Key="IntToStringConverter" />

排序部分如下所示:

<toolkit:DataGridTemplateColumn Width="55" Header="Min Run" SortMemberPath="MinRun">
    <toolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{ Binding Path=MinRun, Converter={StaticResource IntToStringConverter}}" HorizontalAlignment="Center" />
        </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>

DataGrid绑定在这里:

<toolkit:DataGrid x:Name="myGrid" Grid.Row="1" Background="{x:Null}" Foreground="White" ItemsSource="{Binding ObsRacResults}" VirtualizingStackPanel.IsVirtualizing="True" BorderThickness="0" Margin="4" VerticalGridLinesBrush="#FF555555" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False" HorizontalGridLinesBrush="#FF555555" SnapsToDevicePixels="True" CanUserResizeRows="False">

然后我有我的专栏,风格等。

0 个答案:

没有答案