我写了一篇DataTemplate:
<DataTemplate x:Key="ellipseTemplate">
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Ellipse Height="20" Width="20" StrokeThickness="5" Stroke="Black" Fill="Gold"/>
</Grid>
</DataTemplate>
我想在运行时将其设置为DateGridCell.Template属性。 我可以访问单元格并更改其属性。 我正在使用MVVM,所以我不想从代码隐藏中访问它 我可以从视图模型代码访问此模板并将其设置为单元格模板属性吗? 或者我可以在代码中使用viewmodel而不是XAML构建它?
答案 0 :(得分:0)
您正在寻找的内容称为CellTemplateSelector。
看一下这个例子:
这应放在Window.Resources中。
<DataTemplate x:Key="DefaultTemplate">
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Name}" Value="Andre">
<Setter Property="DataGrid.Foreground" Value="Yellow"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
<TextBlock>
<TextBlock.Text>
<Binding Path="Name"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
这应该放在DataGridTemplateColumn定义中。任何DataGridColumn都允许设置CellTemplateSelector。
<DataGridTemplateColumn.CellTemplateSelector>
<local:TemplateSelector
DefaultTemplate="{StaticResource DefaultTemplate}"
</local:TemplateSelector>
<DataGridTemplateColumn.CellTemplateSelector>
在我给你的例子中,这个人有一个自定义的TemplateSelector,他在CellTemplateSelector中定义了这样的:<local:TemplateSelector...
要了解有关CellTemplateSelector或一般有关ContentTemplateSelectors的更多信息,我建议您查看以下链接:
最后一个链接有一个MSDN示例,您也应该查看。