我想绑定到一个集合内的项目,但该项目的索引需要“可变”。 采取以下伪语法例如:是一个变量绑定到一个集合项目可能
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
是这样的可能吗?如果我的属性Pos为1,它应该绑定到集合“Fields”中的第一个项目,并且如果我的Pos为3,它应该绑定到集合中的第三个项目。我简化了我的问题到这种情况...
是这样的可行和如何?
我想绑定到一个集合内的项目,但该项目的索引需要“可变”。 采取以下伪语法例如:是一个变量绑定到一个集合项目可能
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
是这样的可能吗?如果我的属性Pos为1,它应该绑定到集合“Fields”中的第一个项目,并且如果我的Pos为3,它应该绑定到集合中的第三个项目。我简化了我的问题到这种情况...
是这样的可行和如何?
为什么不使用返回集合中当前项目的属性并将其绑定到WPF控件?
如:
class myCollection
{
private string _current;
public string CurrrentField
{
get { return _current; }
}
// TODO: Set current item to whatever the current item is...
}
编辑:
在这种情况下,我认为你需要创建一个跟踪你的数据网格的列,并在项目,然后对准一个辅助类,你集合,以便绑定到您的UI的属性可以正确更新。
首先填满集合,然后你知道你有多少物品,然后通过辅助类循环通过集合并将物品分配给属性,然后移动到网格中的下一列等。
我认为这归结为你自己写一个算法。
是的,这是可能的。你应该实现绑定转换器,将集合转换为集合项目并将索引作为转换器参数。然后你会这样使用它:
<TextBlock Text="{Binding Fields,
Converter={StaticResource CollectionToItemConverter,
ConverterParameter={Binding Pos}}}" />
如果您需要此转换器的代码或有关转换器的其他信息,请发表评论。
希望它有帮助。
尝试阅读ICollectionView ...它可以帮助你,因为它可以自动给你的项目索引来绑定你的文本。
因为我使用集合中的所有元素,但使用不同的绑定。就像我说的,这只是问题本身的简化。 我在一个数据网格的列中使用它,我希望数据网格的所有列使用相同的模板(但第一列将有一个绑定到字段[0],第二个字段[1]等,我不知道将来会有多少列,这是从数据库中产生的)。基本上它归结为解决上述问题。但感谢您提出这种可能性。 – Jan 2009-11-30 16:32:34