2012-03-04 33 views

回答

6

我假設你的Page_Loaded中有一些代碼填充和/或設置ListPicker的SelectedIndex。

您需要確保只設置進入頁面的值。

private void PhoneApplicationPage_Loaded(object sender, EventArgs e) 
    { 


     DataContext = App.ViewModel.something; 
     if (MyListPicker.SelectedIndex == -1) 
     { 
      MyListPicker.ItemsSource = App.ViewModel.SomeList; 
      MyListPicker.SelectedIndex = App.ViewModel.MyBinding; 
     } 
    } 

你也可以確保你忽略的啓動選擇更改(裝載,並在頁面綁定時,可以多次閃光),只有捕獲用戶發起的更改。

private void MyListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (e.RemovedItems != null && e.RemovedItems.Count > 0) 
     { 
      if (this.MyListPicker.SelectedItem != null) 
      {    
       // Do something 
      } 
     } 
    } 
+0

非常感謝! – 2013-06-10 19:53:58

+0

也幫助了我。謝謝! – James 2014-04-09 11:08:41

0

非常感謝你123Tax。在選擇更改事件結束時將listpicker索引設置爲-1可防止它將其調用兩次。例如,這裏是代碼。

private void MyListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (e.RemovedItems != null && e.RemovedItems.Count > 0) 
    { 
     if (this.MyListPicker.SelectedItem != null) 
     {    
      // Do something 
     } 
     MyListPicker.SelectedIndex = -1; 
    } 
} 
相關問題