WPF 使用变量作为索引将 TextBox 绑定到列表 <string>

WPF Bind TextBox to List<string> using variable for index

我有一个 Window,它显示数量可变的相同 UserControl,其中包含(除其他外)一个 TextBox。单个 ViewModel 同时服务于 window 和 UserControls。当所需的索引传递给 UserControl 的构造函数时,如何将 UserControl 的 TextBox 的文本 属性 绑定到我的视图模型中的字符串列表的元素?

我还需要 Mode="TwoWay" 和 UpdateSourceTrigger="PropertyChanged".

使用 VS2013、.NET 4.5.2 和 MVVM-Light 框架。

谢谢。

您需要在您的 ViewModel 中创建一个新的 属性 作为该调用的 "wrapper"。

public string MyElementItem {
   get { return myStringList[myAwesomeIndexFromConstructor]; }
   set { 
      myStringList[myAwesomeIndexFromConstructor] = value; 
      RaisePropertyChanged(...);
}

然后绑定到这个新的 属性,它应该会为您带来神奇的效果!

<TextBox Text="{Binding MyElementItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

决定创建一个新的 ViewModel class 来仅服务于 UserControls,每个对象一个。创建 UserControls 的相同 class 现在创建 ViewModels 并在 UserControls 构造函数中传递一个。