我正在尝试将几列的绑定属性从 string 更改为 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
. 本地namespace
定义在Windows.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">
然后我有我的专栏、风格等。