我正在尝试绑定到集合中的项目,但该项目的索引需要是“变量”。 例如,采用以下伪语法:
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
这样的事情可能吗?如果我的属性Pos是1,它应该绑定到集合“Fields”中的第一个项目,如果我的Pos是3,它应该绑定到集合中的第三个项目。我把问题简化为这种情况......
这样的事情是可行的吗?
答案 0 :(得分:5)
是的,有可能。您应该实现将集合转换为集合项并将索引作为转换器参数的绑定转换器。然后你会像这样使用它:
<TextBlock Text="{Binding Fields,
Converter={StaticResource CollectionToItemConverter,
ConverterParameter={Binding Pos}}}" />
如果您需要此转换器的代码或有关转换器的其他信息,请发表评论。
希望它有所帮助。
答案 1 :(得分:1)
尝试阅读ICollectionView ...它可以帮助你,因为它可以自动给你绑定文本的项目的索引。
答案 2 :(得分:0)
为什么不使用返回集合中当前项的属性并将其绑定到WPF控件?
如:
class myCollection
{
private string _current;
public string CurrrentField
{
get { return _current; }
}
// TODO: Set current item to whatever the current item is...
}
编辑:
在这种情况下,我认为您需要创建一个帮助程序类来跟踪数据网格中的列,然后与集合中的项对齐,以便绑定到UI的属性可以正确获取更新。
首先填写集合,然后你知道你有多少项,然后帮助类循环遍历集合并将项目分配给属性,然后移动到网格中的下一列,等等......
我认为归结为自己编写算法。