我需要动态添加/删除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似乎很难看......
任何帮助?
答案 0 :(得分:0)
好吧,根据我的理解,你需要你的对象有一些额外的属性。像Key
和ValueFromKey
之类的东西。此属性可能类似于:
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绑定到这些新实例的集合。