您好我正在使用WpfToolKit DataGrid并想要设置RowHeaderTemplate动态依赖于Item Type,在我的代码中,object参数始终为null 这是我的代码
XAML
<DataTemplate x:Key="WithCheckBox">
<Grid>
<CheckBox IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type wpftk:DataGridRow}}}"/>
</Grid>
</DataTemplate>
<viewModel:CheckBoxRowDataTemplate x:Key="CheckBoxRowDataTemplate"/>
<wpftk:DataGrid RowHeaderTemplateSelector="{StaticResource CheckBoxDataDataTemplate}">
c#中
public class CheckBoxRowDataTemplate : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = (FrameworkElement)container;
if(element != null && item != null & item is Item)
{
if(((Item)item).ItemType != 3 )
{
return element.FindResource("WithCheckBox") as DataTemplate;
}
else
{
return element.FindResource("WithoutCheckBox") as DataTemplate;
}
}
return null;
}
}
答案 0 :(得分:3)
我知道这是一年的帖子,但希望这有助于某人!
这就是微软所说的:
RowHeaderTemplate不会从中继承数据上下文 数据网格。
文件进一步说:
要将行标题内容设置为根据行数据显示值, 使用。绑定到DataGridRowHeader的Content属性 RowHeaderStyle属性。
所以,你需要做的是将这样的东西添加到你的datagrid xaml:
<DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Content" Value="{Binding}" />
</Style>
</my:DataGrid.RowHeaderStyle>
现在,object参数应该返回绑定到DataGridRow的项目。