私はこの問題を調査するのにかなりの時間を費やしました。どんな助けでも大歓迎です。ComboBox選択項目への双方向バインディング
私はこのように宣言されたWPF ComboBoxを持っています。後ろの私のコードでは
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Click="Button_Click">Click Me</Button>
<ComboBox ItemsSource="{Binding ListOfValues}" SelectedItem="{Binding MySelectedItem}" Grid.Row="1">
</ComboBox>
<CheckBox IsChecked="{Binding IsValueChecked}" Grid.Row="2"></CheckBox>
</Grid>
、私はこれらの性質を持っていると私はINotifyPropertyChangedの
public Window1()
{
InitializeComponent();
ListOfValues = new List<string>();
ListOfValues.Add("apple");
ListOfValues.Add("ball");
ListOfValues.Add("cat");
ListOfValues.Add("dog");
MySelectedItem = "cat";
IsValueChecked = true;
}
public List<string> ListOfValues
{
get
{
return _listOfValues;
}
set
{
_listOfValues = value;
OnPropertyChanged("ListOfValues");
}
}
public string MySelectedItem
{
get
{
return _selectedValueString;
}
set
{
_selectedValueString = value;
OnPropertyChanged("MySelectedItem");
}
}
public bool IsValueChecked
{
get
{
return _isVlaueChanged;
}
set
{
_isVlaueChanged = value;
OnPropertyChanged("IsValueChecked");
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MySelectedItem = "dog";
IsValueChecked = !IsValueChecked;
}
を実装しています、ボタンのクリックイベントは、コンボボックスのSelectedItemプロパティにバインドされているMySelectedItemを変更します。しかし、ボタンをクリックすると、コンボボックスで何も選択されません。なぜか分からない。これは明示的にMode = TwoWayを設定しても起こります。提案してください。私のdatacontextは自己に設定されているので、チェックボックスを追加することでデータバインディングが正しく行われていることを確認しました。
EDIT:これはサンプルWPFプロジェクトで発生します。しかし、私はこれが動作したい私の元のプロジェクトは、winformsアプリです。私は、wpfコントロールを埋め込むために、要素ホストを使用しています。それは違いがありますか?
私が提供していたサンプルでした。混乱を避けるために質問を編集しました。 –