eri*_*200 29 data-binding wpf datatable datagrid row
我有一个绑定到DataTable的DataGrid.我想在RowHeader中显示文本,以实现这样的事情:
Col0 Col1 Col2 Col3
Table | 1 | 3 | 5 | 6 |
Chair | 3 | 2 | 1 | 8 |
Run Code Online (Sandbox Code Playgroud)
这是可能的,如果是这样,我该怎么做?
mar*_*etz 34
我尝试了两个答案,但都没有为我工作.基本上我要做的就是将它们混合在一起.
这对我有用:
<DataGrid name="ui_dataGrid>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type DataGridRow}},
Path=Item.Header}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
诀窍是找到祖先DataGridRow,然后将TextBlock.Text属性绑定到你关心的Item属性,在这种情况下Header(在XAML中比在英语中更容易说).
然后在.xaml.cs中:
ui_dataGrid.ItemsSource = dataSource.Rows;
Run Code Online (Sandbox Code Playgroud)
NB每个Row对象都有一个Header属性,这也是我绑定的属性.
2种方法,prev例子几乎有它,但绑定将无法解析属性,因为表达式缺少"DataContext".
<DataGrid>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.YourProperty}"></TextBlock>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
<!--your stuff-->
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
第二种方法是创建一个转换器来获取绑定,在转换器中解析它并吐出你想要的任何字符串值:
<Views:DataGridRowDataContextToRowHeaderValueConverter x:Key="toRowHeaderValue"/>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type DataGridRow}},
Converter={StaticResource toRowHeaderValue}}"/>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
Run Code Online (Sandbox Code Playgroud)
示例转换器代码:
public class DataGridRowDataContextToRowHeaderValueConverter : IValueConverter
{
public object Convert (object value, Type targetType, object parameter,
CultureInfo culture)
{
var dataGridRow = (DataGridRow) value;
var row = (GridModelExtensions.HourRow) dataGridRow.DataContext;
return row.Days[0].Hour;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试设置 rowheader 模板,如下所示
<DataGrid>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding YourProperty}"></TextBlock>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
//your stuff
</DataGrid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23171 次 |
| 最近记录: |