有没有办法将DataTemplate与参数一起使用?

时间:2010-01-11 14:13:07

标签: wpf gridview binding datatemplate parameters

我需要动态添加/删除GridView列,每个列显示存储在KeyedCollection中的不同元素的信息(用tn'int'索引)。基本技术有效,但需要索引,如下所示:

<GridViewColumn Header="bid">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Width="60" DataContext="{Binding Elements}" Text="{Binding [546].PropName}" TextAlignment="Center" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

但是,在运行时我需要添加更多这些,使用不同的整数键,此时我不确定如何创建新的DataTemplates,每个都有不同的绑定索引。

使用XamlParser构建一个新的DataTemplate似乎很难看......

任何帮助?

1 个答案:

答案 0 :(得分:0)

好吧,根据我的理解,你需要你的对象有一些额外的属性。像KeyValueFromKey之类的东西。此属性可能类似于:

public int Key { get; set; }

public object ValueFromKey
{
   get { return this[Key]; }
}

然后,在您添加GridView列的那一刻,您应该将Key属性的值设置为'magic'数字(如示例中的546)。

您的DataTemplate看起来就像这样简单:

<DataTemplate>
    <TextBlock 
        Width="60" 
        Text="{Binding ValueFromKey.PropName}" 
        TextAlignment="Center" 
        />
</DataTemplate>

如果您无法更改该课程,则会出现问题。然后你可以考虑用你自己的类(一种ViewModel)包装它,并将你的UI绑定到这些新实例的集合。