我有一个绑定到DataTable的DataGrid。我想要在RowHeader中显示文本,以实现如下所示:
Col0 Col1 Col2 Col3
Table | 1 | 3 | 5 | 6 |
Chair | 3 | 2 | 1 | 8 |这是可能的吗?如果可能,我如何做到这一点?
发布于 2011-02-10 21:59:42
两个答案我都试过了,对我来说都不管用。基本上,我要做的就是把它们混合在一起。
这对我来说很有效:
<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>诀窍是找到祖先DataGridRow,然后将TextBlock.Text属性绑定到您关心的项的属性,在本例中是Header (在XAML中可能比在英语中更容易)。
然后在.xaml.cs中:
ui_dataGrid.ItemsSource = dataSource.Rows;注意:每个Row对象都有一个Header属性,这也是我要绑定的。
发布于 2011-09-03 01:54:15
有两种方法可以做到这一点,前一个示例几乎拥有它,但是绑定将无法解析该属性,因为表达式缺少“DataContext”。
<DataGrid>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataContext.YourProperty}"></TextBlock>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
<!--your stuff-->
</DataGrid>第二种方法是创建一个转换器来获取绑定,在转换器中解析它,并输出你想要的任何字符串值:
<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>示例转换器代码:
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;
}
}发布于 2011-01-25 18:01:16
尝试设置rowheader模板,如下所示
<DataGrid>
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding YourProperty}"></TextBlock>
</DataTemplate>
</DataGrid.RowHeaderTemplate>uff
//your stuff
</DataGrid>https://stackoverflow.com/questions/4791929
复制相似问题