C# 是否可以将变量绑定到集合项
我试图绑定到集合中的一个项,但该项的索引必须是“变量”。 以以下伪语法为例:C# 是否可以将变量绑定到集合项,c#,wpf,binding,variables,collections,C#,Wpf,Binding,Variables,Collections,我试图绑定到集合中的一个项,但该项的索引必须是“变量”。 以以下伪语法为例: <TextBlock Text="{Binding Fields[{Binding Pos}]}" /> 这样的事情可能吗?如果my property Pos为1,则它应绑定到集合“字段”中的第一项,如果my Pos为3,则它应绑定到集合中的第三项。我把我的问题简化为这种情况 这样做可行吗?如何实现?为什么不使用一个属性返回集合中的当前项并将其绑定到WPF控件 例如: class myCollecti
<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
这样的事情可能吗?如果my property Pos为1,则它应绑定到集合“字段”中的第一项,如果my Pos为3,则它应绑定到集合中的第三项。我把我的问题简化为这种情况
这样做可行吗?如何实现?为什么不使用一个属性返回集合中的当前项并将其绑定到WPF控件 例如:
class myCollection
{
private string _current;
public string CurrrentField
{
get { return _current; }
}
// TODO: Set current item to whatever the current item is...
}
编辑:
在这种情况下,我认为您需要创建一个helper类,该类跟踪数据网格中的列,然后与集合中的项对齐,以便绑定到UI的属性正确更新
首先填充集合,然后知道其中有多少项,然后使用helper类在集合中循环并将项分配给属性,然后移动到网格中的下一列,等等
我认为这归结为你自己为它写一个算法。是的,这是可能的。您应该实现绑定转换器,该转换器将集合转换为集合项,并将索引作为转换器参数。然后您将像这样使用它:
<TextBlock Text="{Binding Fields,
Converter={StaticResource CollectionToItemConverter,
ConverterParameter={Binding Pos}}}" />
如果您需要此转换器的代码或有关转换器的其他信息,请留下评论
希望有帮助。尝试在ICollectionView上阅读。。。它可以帮助你,因为它可以自动为你提供项目的索引以绑定你的文本。因为我使用的是集合中的所有元素,但绑定方式不同。就像我说的,这只是问题本身的简化。我在datagrid的列中使用它,我希望datagrid的所有列都使用相同的模板(但第一列绑定到字段[0],第二列绑定到字段[1]等等,我不知道ui将来会有多少列。这是从数据库生成的)。基本上可以归结为解决上述问题。但是谢谢你提出这个可能性。很高兴听到它!=)如果这对你有用,别忘了接受答案。=)很抱歉上一次我必须解决这个问题,所以我不能真正测试它。现在我有一个类似的问题,测试了它。因为ConverterParameter不是DependencyProperty,所以不起作用。既然您没有在该方法中获取集合,那么如何实现
ConvertBack
方法?您能描述一下您需要从值转换回集合的情况吗?