0

我只是在学习WPF (and mvvm),我遇到了一个我无法解决的问题google

我有2 ObservableCollections- 练习和图表(该项目是关于在健身房跟踪进度)

练习(ID,姓名

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

现在在一个我想填充图表的窗口中,我有一个listboxwith somelabels和一个_grid_ 和一个comboboxin ItemTemplate

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

问题:

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

1 回答 1

0

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

您的 ViewModel 中有四个属性。

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

您可能会在 ListBox Selected Item 属性的 Setter 中使用 Linq 将您的 Combo Box Selected Item 设置为等于 ListBox Selected Item ExerciseID 的 Item;

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

希望有帮助...

于 2013-01-11T12:18:00.357 回答