双数据绑定

时间:2013-01-11 12:05:51

标签: wpf data-binding combobox

我正在学习 WPF (and mvvm) ,我遇到了一个我无法google通过的问题。

我有 2 ObservableCollections - 练习和图表(项目是关于健身房的赛道进展)

练习( Id,姓名

图表(ExerciseId,ExerciseName,Id,...)

现在,在我要填充图表的窗口中,我有 listbox ,其中包含 labels 和{{1} } <和 _grid 中的 combobox

ItemTemplate绑定到图表集合 Listbox显示了练习列表,因此我将其绑定到练习集合。

问题:

  1. 我可以在xaml中指定组合框当前值应该与Chart.Exercise相同吗?
  2. 如何在XAML中指定绑定,以便将组合框中的练习集合元素分配给Chart.Exercise?

1 个答案:

答案 0 :(得分:0)

使用Element Binding和Converter可以实现这一点......但是,在ViewModel中实现这一点会更简单。

您的ViewModel中将有四个属性。

  • 属性1:练习可观察集合 - 绑定到您的ComboBox ItemSource(ExerciseItems)
  • 属性2:练习选定项目 - 绑定到Combobox SelectedItem(ExerciseSelectedItem)
  • 属性3:图表可观察集合 - 绑定到ListBox(ChartItems)
  • 属性4:图表选定项目 - 绑定到ListBox SelectedItem(ChartSelectedItem)

您可以使用Linq设置您的组合框选定项目,使其等于ListBox选择项属性的Setter中具有ListBox Selected Item ExerciseID的项目;

Public Property ChartSelectedItem As ChartItem
Get
     Return _ChartSelectedItem
End Get
Set(value As ChartItem)
     If value <> _ChartSelectedItem Then
         _ChartSelectedItem = value

         ExcersiseSelectedItem = (From ExcersiseItemsList in ExcersiseItems Where ExcersiseItemsList.ID = value.ExcersiseID).FirstOrDefault

         OnPropertyChanged("ChartSelectedItem")

     End if
End Set
End Property

希望有帮助...