WPF动态设置单元格模板并绑定

3

我有一个GridView控件,我正在添加GridView列。我之前使用了GridViewColumn的DisplayMemberBinding属性,但现在我想使用CellTemplate。我正在绑定一个字典。

下面的代码在使用DisplayMemberBinding时有效:

var column = new GridViewColumn
{
    Header = current.Key,
    DisplayMemberBinding = new Binding("[" + current.Key + ]")
};

现在,我需要对CellTemplate做同样的操作,但出于某些原因,我不确定为什么它没有显示项目。

var column = new GridViewColumn
{
    Header = current.Key,
    CellTemplate = (DataTemplate)FindResource("GridViewTextBlockDataTemplate"),
};

以下是在Window.Resources中定义的DataTemplate:

<DataTemplate x:Key="GridViewTextBlockDataTemplate" x:Name="GridViewTextBlockDataTemplate">
    <TextBlock Text="{Binding Path=[Key]}"></TextBlock>
</DataTemplate>

谢谢,Azam。

FindResource方法返回的是null还是实际的DataTemplate? 如果它返回null,请尝试使用this.Resources["GridViewTextBlockDataTemplate"]。 - Charlie
它返回DataTemplate。我删除了DisplayMemberBinding并添加了CellTemplate。但现在我如何在运行时更改TextBlock文本。 - azamsharp
我有类似的需求。有什么进展吗? - Angshuman Agarwal
1个回答

0

你的解决方案是正确的,除了获取文本块中的值之外,你只需要使用关键字绑定,不需要提供路径,因为你正在绑定数据模板,它会自动分配值。

如果这样做不起作用,请尝试在数据网格中使用数据模板选择器。有关数据模板选择器的详细说明,请查看以下链接: WPF DataTemplate Selector Tutorial


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接