我花了相当多的时间调查这个问题。非常感谢您的任何帮助。
我有一个像这样声明的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;
}
按钮单击事件会更改MySelectedItem的值,该值与ComboBox的SelectedItem属性绑定。但是在单击按钮时,ComboBox中没有选定任何内容。我不明白为什么会这样。即使显式设置Mode=TwoWay也是如此。请给出建议。请注意,我的数据上下文设置为self,所以通过添加复选框,我确认数据绑定正在正确发生。
编辑:请注意,这种情况发生在WPF项目示例中。但是,在我想要实现此功能的原始WinForms应用程序中,我使用ElementHost嵌入了我的WPF控件。这是否有影响?