如何通过用户请求调用IValueConverter? [XamDataGrid记录索引]
我想在我的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实例中添加记录时,这非常有效,但是当我按照数据网格中的任何字段对数据进行排序时,记录索引也会排序(当我按下排序按钮时,值转换器不会调用)。也许我可以手动调用它?
感谢您的任何建议,抱歉我的英语不好。
没有找到相关结果
已邀请:
2 个回复
bab
畦桨存灯
} 注册DepencyProperty:
写风格:
使用以下代码添加用于排序事件,删除事件等的事件处理程序:
就这样。祝好运 :)。