表单加载时触发的wpf组合更改事件

时间:2011-01-31 06:58:54

标签: c# wpf events

我遇到了问题,当窗口加载时,与'组合框'控件关联的'selection_change'事件会在窗口第一次加载时被触发。为什么会出现?如何限制它?

此致

2 个答案:

答案 0 :(得分:2)

使用该代码,SelectionChanged事件不会被引发。创建一个新项目,粘贴并亲自尝试。

我的猜测与 Sekhar _ Pro 的几乎相同,你从后面的代码填充你的ComboBox,其中有什么原因导致要更改的SelectedItem。 调查cmbUsers.SelectedItem事件处理程序中的cmbUsers_SelectionChanged以查看它是否在调试器中具有某个值或为null。另外,查看调用堆栈以查找导致此事件被引发的原因。

示例代码

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        cmbUsers.Items.Add(new ComboBoxItem { Content = "Test" });
        cmbUsers.SelectedIndex = 0;
    }
    private void cmbUsers_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (cmbUsers.SelectedItem != null)
        {
            MessageBox.Show(cmbUsers.SelectedItem.ToString());
        }
    }
}

在事件处理程序

中,调用堆栈对我来说是这样的

enter image description here

答案 1 :(得分:0)

这不是一个正常的行为,有些你必须做的事情,比如设置SelectedItem等,这反过来又会触发事件。检查表单的生命周期事件,看看你是否正在做这样的事情,可能是在加载或激活事件或构造函数中的某个地方。