0

私はただ学んWPF (and mvvm)でいます、そして私は私が通り抜けることができない問題に遭遇しましたgoogle

私は持っています2 ObservableCollections-エクササイズとチャート(プロジェクトはジムでの追跡の進捗状況に関するものです)

演習(ID、名前

チャート(ExerciseId、ExerciseName、Id、...)

チャートを塗りつぶしたいウィンドウに、listboxいくつかlabels_grid_とcomboboxinがありItemTemplateます。

Listboxチャートコレクションにバインドされています。
Comboboxはエクササイズのリストを示しているので、エクササイズコレクションにバインドしています。

質問:

  1. コンボボックスの現在の値をChart.Exerciseと同じにするようにxamlで指定できますか?
  2. XAMLでバインディングを指定して、コンボボックスのエクササイズコレクション要素がChart.Exerciseに割り当てられるようにするにはどうすればよいですか?
4

1 に答える 1

0

Element BindingとConverterを使用してこれを実現できる可能性があります...ただし、ViewModelでこれを実現する方が簡単です。

ViewModelには4つのプロパティがあります。

  • プロパティ1:監視可能なコレクションの演習-ComboBox ItemSource(ExerciseItems)にバインドされています
  • プロパティ2:選択したアイテムの演習-コンボボックスSelectedItem(ExerciseSelectedItem)にバインド
  • プロパティ3:グラフの監視可能なコレクション-リストボックスにバインド(ChartItems)
  • プロパティ4:選択したアイテムのグラフ-リストボックスにバインドSelectedItem(ChartSelectedItem)

おそらくLinqを使用して、コンボボックスの選択されたアイテムを、リストボックスの選択されたアイテムプロパティのセッターで、リストボックスの選択されたアイテムの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

お役に立てば幸いです...

于 2013-01-11T12:18:00.357 に答える