我花了相當多的時間來研究這個問題。任何幫助將不勝感激。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