0

以下は、私の WPF データグリッドからの DataGridTextColumn 定義で、コンバータ定義とコンバータ コードを使用しています。誰かがこの列をソートする方法を教えてください. VB.Net で本当に役立つ説明をしていただければ、ありがとうございます。

<Window.Resources>
    <c:DurationConverter x:Key="MyDurationConverter"/>
    <c:DistanceConverter x:Key="MyDistanceConverter"/>
</Window.Resources>

<DataGridTextColumn Header="Duration" Width="70" x:Name="Duration">
  <DataGridTextColumn.Binding >
     <MultiBinding Converter="{StaticResource MyDurationConverter}">
        <Binding Path="StartDate" />
        <Binding Path="EndDate"/>
        <Binding Mode="OneWay" />
      </MultiBinding>
  </DataGridTextColumn.Binding>
 </DataGridTextColumn>

Friend Class DurationConverter
    Implements IMultiValueConverter

    Friend Function Convert(values() As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IMultiValueConverter.Convert
        Return (CType(values(1), DateTime) - CType(values(0), DateTime)).ToString

    End Function

    Friend Function ConvertBack(value As Object, targetTypes() As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object() Implements System.Windows.Data.IMultiValueConverter.ConvertBack
        Throw New NotImplementedException
    End Function
End Class
4

1 に答える 1

0

コンバーターはとTimeSpanの間でのみ計算するため、オブジェクトに別のパブリックプロパティを作成すると、それを呼び出して、 を返さずに に直接バインドできます。EndDateStartDateTimeSpanDurationEndDate - StartDateIMultiValueConverterDataGridTextColumn

<DataGridTextColumn Header="Duration" Width="70" x:Name="Duration" Binding="{Binding Path=Duration}">

プレゼンテーションのために変換されますToString()が、それでも比較されTimeSpan、他の列と同じように並べ替えることができます

于 2013-06-01T20:21:18.743 に答える