在XAML中有一个DataTemplate,需要以编程方式设置Cell Template

时间:2010-09-18 16:39:18

标签: c# wpf datagrid datatemplate

我有DataTemplate,用XAML编写

<DataTemplate x:Key="AnalogTemplate" x:Name="AnalogTemplate" >
                        <TextBox  Text="{Binding parameter}" Background="Black"/>
                    </DataTemplate>

我有一些DataGrid

如何将DataTemplate“AnalogTemplate”应用于C#中的DataComprid中的一个指定列?

1 个答案:

答案 0 :(得分:2)

您可以使用DataGridTemplateColumn。我假设您要在xaml中设置默认模板,稍后在代码中覆盖它。在这里,我将其设置为MyDefaultTemplate,它应该与您的AnalogTemplate一起在控件的资源中定义:

    <DataGrid AutoGenerateColumns="False" Height="200" Name="dataGrid1" Width="200">
        <DataGrid.Columns>
            <DataGridTemplateColumn x:Name="myColumn" CellTemplate="{StaticResource MyDefaultTemplate}"/>                
        </DataGrid.Columns>
    </DataGrid>

然后您可以在代码中轻松更改它:

myColunm.CellTemplate = (DataTemplate) FindResource("AnalogTemplate");

在代码中做任何事情之前,你应该问自己是否可以用纯xaml代替它,通常你可以。还可以看看CellTemplateSelector和CellEditingTemplateSelector。

请注意,DataGrid使用两个模板。一个用于显示不可编辑的内容(CellTemplate),一个用于显示可编辑的内容(CellEditingTemplate)。 请参阅DataGridTemplateColumn at MSDN