双向绑定 - 控制到列表中的项目 - 在WPF中?

时间:2013-10-20 19:02:34

标签: c# wpf binding

项目结构(伪代码):

Backend:

Controler // controler class
  List<Item> ItemsList
    Item // Model/Data 'struct' kind of class
      decimal Centimeters
      decimal Inches

  int ItemIndex // index of item in ComboBox selected for work

UI:

MainWindow
  // TextBoxes
  Centimeters
  Inches

  ComboBox ItemIndex

功能: 当我在ComboBox中选择ItemIndex时,Item中具有相应索引的属性(Inches,..)应该以某种方式绑定到TextBoxes。 用户可以使用TextBox或Controller更改Items中的数据,Controller根据用户输入的值计算剩余值。

是否有一些简单的方法在WPF中进行绑定?

我刚开始使用WPF,所以如果问题有点模糊或非常基本,我会道歉。 我觉得有一个光滑的解决方案,但我有点卡在这里。

我知道我可以通过PropetyChanged事件的可怕手工制作来解决这个问题。从文本框到窗口到​​控制器到将分配给属性的项目。同样的回来。 我在应用程序的Winforms版本中实现了这样,但它看起来很混乱。 仍希望有更优雅的解决方案。你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

这是TextBoxesSelectedItem的{​​{1}}绑定的方法。在此,我假设ComboBox的{​​{1}}类型为ItemsSource

ComboBox

但在这种情况下,您的List<Item>课程应该实施 <TextBox x:Name="Inches" Text="{Binding SelectedItem.Inches, ElementName=MyCombo}"/> <TextBox x:Name="Centis" Text="{Binding SelectedItem.Centimeters, ElementName=MyCombo}"/> <ComboBox x:Name="MyCombo"/> 并为其属性Cencheters和Inches提升PropertyChanged,如下所示

Item