我花了相当多的时间来研究这个问题。任何帮助将不胜感激。ComboBox双向绑定到selecteditem
我有一个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;
}
按钮点击事件改变了这势必ComboBox的SelectedItem属性的MySelectedItem。但是在按钮点击时,组合框中没有任何东西被选中。我不明白为什么。即使我明确设置Mode = TwoWay,也会发生这种情况。请建议。请注意,我的datacontext设置为self,所以我已确认数据绑定正在通过添加复选框正确地发生。编辑:请注意,这发生在示例WPF项目中。但我想要这个工作的原始项目是一个winforms应用程序。我正在使用elementhost嵌入我的wpf控件。这是否有所作为?
这是我提供的一个样本。编辑该问题以避免混淆。 – 2012-01-27 09:16:13