我有以下DataTemplate
用于显示User
个实例的全名:
<DataTemplate x:Key="NameCellTemplate">
<Label HorizontalAlignment="Stretch" Height="25">
<Label.Content>
<MultiBinding
Converter="{StaticResource FullNameConverter}"
ConverterParameter="{x:Static Conv:NameFormat.FirstThenLast}" >
<!-- Requires binding to object of type 'User' -->
<Binding Path="FirstName" />
<Binding Path="LastName" />
</MultiBinding>
</Label.Content>
</Label>
</DataTemplate>
我目前使用它来自定义模板列,如下所示:
<DataGridTemplateColumn
CellTemplate="{StaticResource NameCellTemplate}" />
此列属于一个充满User
个实例的数据网格,但我想将数据模板重新用于不同数据网格中的列。第二个数据网格绑定到另一个类型,而不是User
作为属性,所以我喜欢来执行此操作:
<DataGridTemplateColumn
Binding="{Binding Path=User}"
CellTemplate="{StaticResource NameCellTemplate}" />
但是,模板列不允许使用Binding
属性。
如何为列模板指定绑定路径,或修改数据模板,以便数据模板可以重用于任一数据网格?
答案 0 :(得分:2)
在这种情况下,由于datagrid行的datacontexts不同,因此您可以像这样应用模板:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentControl Content="{Binding User}"
ContentTemplate="{StaticResource NameCellTemplate}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>