在WP7中未正确显示ListPicker SelectedIndex

Sup*_*gel 1 silverlight silverlight-toolkit windows-phone-7

我对ListPickerWP7中的元素有一个奇怪的问题.

问题

通过a 设置ListPicker's' 不会更改加载后显示的默认项目.SelectedIndexBinding

作为测试,我很快就修改了微软SettingsSample以包含一个ListPicker.您可以在http://www.mediafire.com/?w0n0ymkh4dwe9b3下载

这是我们崩溃了ListPicker:

 -----------------
| Times New Roman |
 -----------------
Run Code Online (Sandbox Code Playgroud)

这就是ListPicker它扩展的时候:

 -----------------
| Times New Roman |
| Arial           |
| Comic Sans MS   |
 -----------------
Run Code Online (Sandbox Code Playgroud)

如果我们选择'Arial',导航,然后再回来,ListPicker仍然显示:

 -----------------
| Times New Roman |
 -----------------
Run Code Online (Sandbox Code Playgroud)

它应该显示(因为设置保存正确):

 -----------------
| Arial           |
 -----------------
Run Code Online (Sandbox Code Playgroud)

进一步的混乱

在上面的例子中,如果我们单击ListPicker,实际上选择了'Arial'(因为ListBoxItem突出显示了该文本).由于某种原因,它只是在加载控件时没有显示为默认值.

如果我们忘记了这个Binding方法,而是SelectedIndex在XAML中手动设置为'1',那么我们会在加载控件时得到预期的结果:

 -----------------
| Arial           |
 -----------------
Run Code Online (Sandbox Code Playgroud)

想法?

有没有办法更新ListPicker控件,以便在SelectedIndex使用时正确显示Binding?我想我错过了一些明显的东西,但我已经搜索过,但却找不到任何东西.

提前致谢!

Der*_*kin 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);
        }
Run Code Online (Sandbox Code Playgroud)

或者,您可以处理ListPicker本身的Loaded事件并在那里设置绑定.如果您有多个选择器,以前的方法是理想的.当你只有一个选择器时,后一种方法更适合这种情况.

注意:我还没有检查Toolkit的最新源代码,看看这是否仍然是一个突出的bug.