XamDataGrid コントロールに MS Excel のようなレコード インデックスを追加したいと考えています。このトリックには IValueConverter を使用します。この XAML コード幅でレコード インデックスを表示するためのテンプレートをいくつか定義します。
<local:RowNumberConverter x:Key="rowNumberConverter" />
<Style TargetType="{x:Type igDP:RecordSelector}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:RecordSelector}">
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource rowNumberConverter}">
<Binding />
<Binding RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type igDP:XamDataGrid}}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
次のように定義された RowNumberConverter:
class RowNumberConverter : IMultiValueConverter {
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
//get the grid and the item
Object item = values[0];
XamDataGrid grid = values[1] as XamDataGrid;
int index = grid.RecordManager.Unsorted.IndexOf(((DataRecord)item));
return index.ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) {
throw new NotImplementedException();
}
#endregion
}
これは、XamDataGrid インスタンスにレコードを追加すると完全に機能しますが、データグリッドの任意のフィールドでデータを並べ替えると、レコード インデックスも並べ替えられます (並べ替えボタンを押しても値コンバーターは呼び出されません)。多分私はそれを手動で呼び出すことができますか?
アドバイスをありがとう、私の悪い英語を申し訳ありません。