XAML ComboBox SelectionChanged触发OnLoad

gri*_*egs 8 xaml selectionchanged

如果我有一个具有SelectionChanged事件的ComboBox,它会在我加载控件时触发.

所以在页面加载时我设置了SelectedValue和SelectionChanged事件,这不是我想要发生的事情.

什么是停止这个的接受的计划?

Sim*_*Fox 14

两个明显的解决方案是1)等待包含ComboBox的Window/Page/UserControl的Loaded事件并在那里挂起SelectionChanged ...例如在构造函数中:

// set the inital selected index for the combo box here...

this.Loaded += (s, args) =>
               {
                    cmbBox.SelectionChanged += 
                            new SelectionChangedEventHandler(HandleChanged);
               };
Run Code Online (Sandbox Code Playgroud)

或者2)在做任何事情之前检查ComboBox是否已加载到选择更改的处理程序中,如果没有,则返回...例如在处理程序中:

if (!cmbBox.IsLoaded)
        return;
Run Code Online (Sandbox Code Playgroud)

我更喜欢数字1,因为每次激活SelectionChanged处理程序时都不需要检查.