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 构造函数中传递一个。
我有一个 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 构造函数中传递一个。