我对WP7中的ListPicker
元素有一个奇怪的问题。
问题
通过ListPicker
设置SelectedIndex
的{{1}}不会更改加载后显示的默认项目。
示例
作为测试,我很快修改了Microsoft的Binding
以包含SettingsSample
。您可以在http://www.mediafire.com/?w0n0ymkh4dwe9b3
这是我们已折叠的ListPicker
:
ListPicker
这是 -----------------
| Times New Roman |
-----------------
,当它被扩展时:
ListPicker
如果我们选择“Arial”,请离开,然后再次返回, -----------------
| Times New Roman |
| Arial |
| Comic Sans MS |
-----------------
仍会显示:
ListPicker
它应该显示(因为设置保存正确):
-----------------
| Times New Roman |
-----------------
进一步混乱
在上面的示例中,如果我们点击 -----------------
| Arial |
-----------------
,实际上会选择“Arial”(因为此ListPicker
的文字会突出显示)。出于某种原因,它只是在加载控件时没有显示为默认值。
如果我们忘记ListBoxItem
方法,而是在XAML中手动将Binding
设置为'1',那么我们会在加载控件时得到预期的结果:
SelectedIndex
思想吗
使用 -----------------
| Arial |
-----------------
时,有没有办法更新ListPicker
控件以正确显示SelectedIndex
?我想我错过了一些明显的东西,但我已经搜索过,但却找不到任何东西。
提前致谢!
答案 0 :(得分: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本身的已加载事件,并在那里设置绑定。如果您有多个选择器,以前的方法是理想的。当你只有一个选择器时,后一种方法更适合这种情况。
注意:我没有检查Toolkit的最新源代码,看看这是否仍然是一个突出的错误。