一尘不染

ComboBox- SelectionChanged事件具有旧值,而不是新值

c#

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事件中传递的对象,则会得到相同的行为。


阅读 480

收藏
2020-05-19

共1个答案

一尘不染

根据MSDN, e.AddedItems

获取包含所选项目的列表。

因此,您可以使用:

private void OnMyComboBoxChanged(object sender, SelectionChangedEventArgs e)
{
    string text = (e.AddedItems[0] as ComboBoxItem).Content as string;
}

你也可以使用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;
}

由于ContentSelectedItem都是对象,一种更安全的方法是使用.ToString()而不是as string

2020-05-19