0

我写了一个数据模板:

  <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,所以我不想从代码隐藏中访问它 我可以从视图模型代码中访问此模板并将其设置为单元格模板属性吗?或者我可以用代码而不是 XAML 在视图模型中构建它?

4

1 回答 1

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 的更多信息,我建议您查看以下链接:

http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtemplatecolumn.celltemplateselector%28v=vs.110%29.aspx

http://msdn.microsoft.com/en-us/library/system.windows.controls.contentcontrol.contenttemplateselector%28v=vs.110%29.aspx

最后一个链接有一个 MSDN 示例,您也应该查看它。

于 2013-11-28T10:38:12.173 回答