我正在使用WPF和MVVM。在WPF DataGrid RowHeader中显示一个运行号
我如何可以绑定:
- 数字
- 或CLR对象与属性号
- 或字符串
列表的列表清单WPF DataGrid的RowHeader?
我正在使用WPF和MVVM。在WPF DataGrid RowHeader中显示一个运行号
我如何可以绑定:
列表的列表清单WPF DataGrid的RowHeader?
你可以采取这种方法http://www.codeproject.com/KB/WPF/MVVM_DataGrid.aspx?msg=3241301
基本上你是创建一个列表,将处理的编号给你,只要T的对象实现ISequenceObject。
如果你想走另一个方向,你可以看看处理LoadingRow事件,并简单地将1添加到已知的DataColumn。这不会破坏MVVM的概念,因为编号列不是业务逻辑的一部分,而是演示文稿的一部分。
要使编号DataGrid可重用,您还可以从DataGrid继承并创建自己的编号DataGrid。
我从http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7d0cbdf2-dea3-4dd4-a570-08aa6c78d911找到了这个问题的优雅解决方案。这里是回顾:
<tk:DataGrid x:Name="dg" LoadingRow="dg_LoadingRow" ItemsSource="{Binding}">
<tk:DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type tk:DataGridRow}}, Path=Header}"></TextBlock>
</DataTemplate>
</tk:DataGrid.RowHeaderTemplate>
</tk:DataGrid>
private void dg_LoadingRow(object sender, Microsoft.Windows.Controls.DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
但是,我不能让行标题上的号码右对齐。将HorizontalAlignment =“Right”添加到TextBlock并没有帮助。我还尝试将TextBlock包装到StackPanel中,并设置此属性,但它也不起作用。任何想法?
第四届要求我忘了在此列出: - 的的rowHeader不能显示在第一列 这会导致麻烦筛选,排序等 – msfanboy 2010-06-08 17:39:43