是否可以绑定到集合项的变量

Jan*_*Jan 5 c# variables collections wpf binding

我正在尝试绑定到集合中的项目,但该项目的索引需要是"变量".以下面的伪语法为例:

<TextBlock Text="{Binding Fields[{Binding Pos}]}" />
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?如果我的属性Pos是1,它应该绑定到集合"Fields"中的第一个项目,如果我的Pos是3,它应该绑定到集合中的第三个项目.我把问题简化为这种情况......

这样的事情是可行的,怎么样?

lev*_*ovd 5

对的,这是可能的.您应该实现将集合转换为集合项并将索引作为转换器参数的绑定转换器.然后你会像这样使用它:

<TextBlock Text="{Binding Fields, 
                  Converter={StaticResource CollectionToItemConverter,
                  ConverterParameter={Binding Pos}}}" />
Run Code Online (Sandbox Code Playgroud)

如果您需要此转换器的代码或有关转换器的其他信息,请发表评论.

希望能帮助到你.

  • 抱歉.我不得不在最后一次解决它,所以我无法真正测试它.现在我有一个类似的问题,测试它.没有工作原因ConverterParameter不是DependencyProperty. (2认同)

Ton*_*ion 0

为什么不使用返回集合中当前项目的属性并将其绑定到 WPF 控件?

例如:

class myCollection
{

    private string _current;

    public string CurrrentField
    {
         get { return _current; }
    }

    // TODO: Set current item to whatever the current item is...
}
Run Code Online (Sandbox Code Playgroud)

编辑:

在这种情况下,我认为您需要创建一个帮助程序类来跟踪数据网格中的列,然后与集合中的项目对齐,以便绑定到 UI 的属性能够正确更新。

首先填充集合,然后您知道其中有多少项目,然后使用辅助类循环遍历集合并将项目分配给属性,然后移至网格中的下一列,等等...

我认为这归结为你自己编写一个算法。