ファイルから読み取られているため、いくつかの列のバインディング プロパティを文字列から 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">
そして、列、スタイルなどがあります。