如果我有一個具有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