WPF DataGrid以编程方式添加复杂列

qu1*_*dry 3 .net wpf xaml wpfdatagrid

我正在尝试以编程方式向我的DataGrid添加列,因为它们在运行时才知道.我已经完成了大部分工作,并且从代码中添加"普通"列并不是问题.但是,我正在尝试添加的列现在有一个DataTemplate.这是XAML:

<DataGridTemplateColumn Header="{Binding colHeader}">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Border BorderBrush="{Binding BorderColour}" BorderThickness="2">
                <TextBlock Text="{Binding TextInfo}" />
            </Border>
        </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

通常我会使用这样的东西来创建一个列添加到网格:

Private Function AddColumn(colHeader As String, colBinding As String) As DataGridColumn
    Dim textColumn As New DataGridTextColumn()
    textColumn.Header = colHeader
    textColumn.Binding = New Binding(colBinding)
    Return textColumn
End Sub
Run Code Online (Sandbox Code Playgroud)

但我对如何添加更复杂的XAML感到困惑.有什么建议?

谢谢你的帮助!

Sis*_*phe 5

使用x:Key属性在资源字典中定义列的DataTemplate,然后在后面的代码中访问它以设置单元格模板.

<DataTemplate x:Key="your_data_template">
    <Border BorderBrush="{Binding BorderColour}" BorderThickness="2">
        <TextBlock Text="{Binding TextInfo}" />
    </Border>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

然后在代码背后

textColumn.CellTemplate = Application.Current.FindResource("your_data_template") as DataTemplate
Run Code Online (Sandbox Code Playgroud)