如果我有一个具有SelectionChanged事件的组合框,它在我加载控件时触发。XAML ComboBox SelectionChanged触发OnDoad
所以在页面加载时,我设置了SelectedValue和SelectionChanged事件,这不是我想要发生的事情。
什么是公认的制止这种做法?这个
如果我有一个具有SelectionChanged事件的组合框,它在我加载控件时触发。XAML ComboBox SelectionChanged触发OnDoad
所以在页面加载时,我设置了SelectedValue和SelectionChanged事件,这不是我想要发生的事情。
什么是公认的制止这种做法?这个
两个显而易见的解决办法是1)等到它包含了组合框的窗口/页/用户控件的Loaded事件和挂钩的SelectionChanged那里......例如,在构造函数中:
// set the inital selected index for the combo box here...
this.Loaded += (s, args) =>
{
cmbBox.SelectionChanged +=
new SelectionChangedEventHandler(HandleChanged);
};
或2)检查组合框已在选择改变处理程序加载做任何事情之前,并返回,如果它没有......例如,在处理程序:
if (!cmbBox.IsLoaded)
return;
我宁愿1号,因为它不要求每次调用SelectionChanged处理程序时都要检查。
我面临的一个特殊情况:
如果您使用的是支点,并过早点火控制在PivotItem> 0,您仍然有问题。
在这种情况下,似乎this.Loaded()仅引用PivotItem“0”,并且在UI中更改为其他PivotItem将触发事件。
在这种情况下,解决的办法是(你的榜样):
cmbBox.Loaded += (s, args) =>
{
cmbBox.SelectionChanged +=
new SelectionChangedEventHandler(HandleChanged);
};
十分感谢为 – griegs 2010-05-04 01:07:27
由于这是非常有帮助... – KomalJariwala 2013-03-15 07:21:58
在这里我必须把你的第一个解决方案... – SANDEEP 2015-03-28 11:25:18