私は、既存の WPF フォームにコンボボックスを追加する任務を負っています。私は WPF を使用したことがなく、特に ObservableCollection プロパティのバインドと使用に関してはかなり迷っています。すべての例は、私がそうするように言われた方法とはまったく異なります。
私はもともとコンボボックスを次のように設定していました:
<ComboBox Name="GroupComboBox" Width="132" Height="22" Grid.Column="0" Grid.Row="3" Margin="0,30" VerticalAlignment="Top" >
<ComboBoxItem Content="Data Warehouse"></ComboBoxItem>
<ComboBoxItem Content="KPI"></ComboBoxItem>
<ComboBoxItem Content="Failures"></ComboBoxItem>
<ComboBoxItem Content="All Groups"></ComboBoxItem>
</ComboBox>
これはうまくいきました。これは、すべての ComboBoxItem Contents を削除し、コンボ ボックスを ObservableCollectionGroups と ObservableCollectionSelectedGroups にバインドする必要があると言われたときです。これを行うには、これを ViewModel クラスに追加するだけで済みます。
public ObservableCollection<string> Groups { get; set; }
public ObservableCollection<string> SelectedGroups { get; set; }
わかりましたので、上記を次のようにビュー モデル クラスに追加しました。
public class ClioViewModel : INotifyPropertyChanged
{
public ObservableCollection<string> Groups { get; set; }
public ObservableCollection<string> SelectedGroups { get; set; }
}
(このクラスにはすでに他にもたくさんのものがありますが、時間とスペースの関係で投稿しませんでした。必要に応じて、リクエストがあれば喜んで追加します)
次に、xaml を次のように変更しました。
<ComboBox Name="GroupComboBox" ItemsSource="{Binding Groups}" SelectedItem=" Binding SelectedGroups, Mode=TwoWay}" Width="132" Height="22" Grid.Column="0" Grid.Row="3" Margin="0,30" VerticalAlignment="Top" >
</ComboBox>
うまくいきませんでした。もちろん、うまくいきませんでした!コンボボックスの中に入れたいアイテムが一つもありません! 問題は、それらがコンボボックス内に属しておらず、グループ/選択されたグループのプロパティに配置されていない場合、一体どこに行くのでしょうか? 私が見た多数のコンボボックス バインディングの例のどれも、私が指示されているものとはまったく似ていません。
誰かが私が欠けているものについて教えてくれたら、本当に感謝しています。