2011-04-27 66 views
1

WP7中的ListPicker元素存在一個奇怪的問題。ListPicker SelectedIndex在WP7中顯示不正確

的問題

通過Binding設置一個ListPickerSelectedIndex不會改變它加載後顯示的默認項。

作爲一個測試,我趕緊修改微軟的SettingsSample包括一個ListPicker。你可以在這裏下載:http://www.mediafire.com/?w0n0ymkh4dwe9b3

這是我們的倒​​塌ListPicker

----------------- 
| Times New Roman | 
----------------- 

這是ListPicker當它展開:

----------------- 
| Times New Roman | 
| Arial   | 
| Comic Sans MS | 
----------------- 

如果我們選擇 '宋體',導航離開,然後再回來,ListPicker還顯示:

----------------- 
| Times New Roman | 
----------------- 

儘管它應該顯示(因爲這些設置是正確保存):

----------------- 
| Arial   | 
----------------- 

進一步的混亂

在上面的例子,如果我們點擊ListPicker,「宋體」實際上是選擇了(因爲這個ListBoxItem的文本被突出顯示)。出於某種原因,它只是在控件加載時未顯示爲默認值。

如果我們忘記了Binding的做法,而是在XAML中手動設置SelectedIndex爲「1」,那麼我們得到當控件加載期望的結果:

----------------- 
| Arial   | 
----------------- 

想法?

使用Binding時,有沒有一種方法來更新ListPicker控制,以顯示正確SelectedIndex?我想我錯過了一些顯而易見的東西,但我已經搜索過但找不到任何東西。

在此先感謝!

回答

6

我相信有一個與ListPicker控件做綁定選擇的一個突出的錯誤。我認爲推薦的解決方案是在頁面的OnNavigatedTo覆蓋中手動設置綁定。下面的代碼顯示我怎麼做我的應用程序之一:

 protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      base.OnNavigatedTo(e); 

      Binding pickerBinding = new Binding("DistanceUnit") 
      { 
       Source = App.Current.Resources["Settings"], 
       Mode = BindingMode.TwoWay 
      }; 
      this._distanceUnit.SetBinding(ListPicker.SelectedItemProperty, pickerBinding); 
     } 

或者,你可以處理加載事件的ListPicker本身並設置有結合。如果您有多個選擇器,以前的方法是理想的。後一種方法更適合於只有一個選擇器的場景。

注意:我沒有檢查工具包的最新源代碼,看看這是否仍然是一個突出的錯誤。

+0

謝謝德里克,那很完美!檢查完後,你說'ListPicker'存在一個錯誤,並且在2011年2月發佈時還沒有修復。然而,我在'OnNavigateTo'上面實現了你的方法,遍歷所有'ListPicker'元素,並且它工作的很好。非常感謝! – Superangel 2011-04-28 01:32:51

+0

聖牛,絕對工作Tks這麼多,我花了整整一天,直到我找到你的anwser:D – 2014-06-28 03:00:22