【问题标题】:Have a DataTemplate in XAML, need to programmaticaly set CellTemplate在 XAML 中有一个 DataTemplate,需要以编程方式设置 CellTemplate
【发布时间】:2010-09-18 16:39:17
【问题描述】:

我有 DataTemplate,用 XAML 编写

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

我有一些数据网格

如何在 C# 中以编程方式将 DataTemplate "AnalogTemplate" 应用于 DataGrid 中的一个指定列?

【问题讨论】:

    标签: c# wpf datagrid datatemplate


    【解决方案1】:

    您可以使用 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

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 2015-06-04
      • 1970-01-01
      • 2013-12-04
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多