C#、. NET 4.0,VS2010。
WPF的新手。我的MainWindow上有一个ComboBox。我迷上了所述组合框的SelectionChanged事件。但是,如果我在事件处理程序中检查组合框的值,则它具有旧值。这听起来更像是“ SelectionChanging”事件,而不是SelectionChanged事件。
实际发生选择后,如何获得ComboBox的新值?
目前:
this.MyComboBox.SelectionChanged += new SelectionChangedEventHandler(OnMyComboBoxChanged); ... private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { string text = this.MyComboBox.Text; }
注意,如果使用在事件args,egeOriginalSource事件中传递的对象,则会得到相同的行为。
根据MSDN, e.AddedItems:
e.AddedItems
获取包含所选项目的列表。
因此,您可以使用:
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { string text = (e.AddedItems[0] as ComboBoxItem).Content as string; }
你也可以使用SelectedItem,如果你使用string值的Items来自sender:
SelectedItem
string
Items
sender
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { string text = (sender as ComboBox).SelectedItem as string; }
要么
private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e) { string text = ((sender as ComboBox).SelectedItem as ComboBoxItem).Content as string; }
由于Content和SelectedItem都是对象,一种更安全的方法是使用.ToString()而不是as string
Content
.ToString()
as string