2011-01-31 46 views
0

我遇到问题,当窗口加载时,与第一次加载窗口时,与'组合框'控件关联的'selection_change'事件正在触发。为什么发生这种情况,以及如何限制它?当窗体加载时触发wpf组合更改事件

问候

+0

你确定你是不是编程设定的所选元素在构造函数中的组合框或代码中的其他地方?如果你这样做,那么这个事件将被调用。 – 2011-01-31 07:03:39

+0

你可以告诉我们你正在处理Combobox的代码,也许你正在做的事情是触发事件... – 2011-01-31 07:10:26

+0

@shekhar,没什么特别的,只是在xaml文件中:并在后面的代码中的相应功能被调用gettting。 – Rana 2011-01-31 07:19:37

回答

2

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

我的猜测是几乎一样Sekhar _ 的,你填充你的ComboBox从后面的代码,以及东西在里面引起改变的SelectedItem。 调查cmbUsers_SelectionChanged事件处理程序中的cmbUsers.SelectedItem以查看它是否具有某个值或在调试器中为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

0

这不是一个正常的行为,一些在那里你必须做一些像设置的SelectedItem,等这反过来又触发了事件。检查表单的生命周期事件,看看你是否正在做这样的事情,可能在Load或Activate事件或构造函数中的某处。

相关问题