Иметь DataTemplate в XAML, нужно программно установить CellTemplate - PullRequest
1 голос
/ 18 сентября 2010

У меня есть DataTemplate, написанный на XAML

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

И у меня есть некоторая DataGrid

Как программно применить DataTemplate "AnalogTemplate" к одному указанному столбцу в DataGrid на C #?

1 Ответ

2 голосов
/ 19 сентября 2010

Вы можете использовать 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 на MSDN .

...