我有DataTemplate,用XAML编写
<DataTemplate x:Key="AnalogTemplate" x:Name="AnalogTemplate" >
<TextBox Text="{Binding parameter}" Background="Black"/>
</DataTemplate>
我有一些DataGrid
如何将DataTemplate“AnalogTemplate”应用于C#中的DataComprid中的一个指定列?
答案 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。