如果我有一个ComboBox并且它有一个SelectionChanged事件,当我加载控件时它会触发。
因此,在页面加载时我设置了SelectedValue,SelectionChanged事件就会触发,这不是我想要的结果。
有什么可行的方法可以阻止这种情况发生?
因此,在页面加载时我设置了SelectedValue,SelectionChanged事件就会触发,这不是我想要的结果。
有什么可行的方法可以阻止这种情况发生?
有两种明显的解决方案,一种是等待包含组合框的窗口/页面/用户控件的Loaded事件并在那里挂钩SelectionChanged...例如在构造函数中:
// set the inital selected index for the combo box here...
this.Loaded += (s, args) =>
{
cmbBox.SelectionChanged +=
new SelectionChangedEventHandler(HandleChanged);
};
或者2)在选择更改处理程序中检查 ComboBox 是否已加载,如果未加载则返回 ... 例如在处理程序中:
if (!cmbBox.IsLoaded)
return;
我更喜欢方案1,因为它不需要在每次触发SelectionChanged处理程序时进行检查。
cmbBox.Loaded += (s, args) =>
{
cmbBox.SelectionChanged +=
new SelectionChangedEventHandler(HandleChanged);
};