我想在我的 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 实例中添加记录时,这非常有效,但是当我按数据网格中的任何字段对数据进行排序时,记录索引也会排序(当我按下排序按钮时,值转换器不会调用)。也许我可以手动调用它?
感谢您的任何建议,并为我糟糕的英语感到抱歉。