WP8:SelectedItem在使用ListPicker时被重置

时间:2014-01-20 14:10:53

标签: c# windows-phone-8 listpicker

在我的Windows Phone 8项目中,我使用的是SDK Toolkit中的ListPicker控件(v 4.2013.06.11)。

在我的标记中,我定义了ItemsSource以及用于呈现控件的2个模板:

    <toolkit:ListPicker x:Name="StagesList" Margin="24" Grid.Row="2" 
                        ItemsSource="{Binding Model.Stages}"
                        FullModeItemTemplate="{StaticResource stageItemTemplate}"
                        ItemTemplate="{StaticResource stageItemTemplate}">
    </toolkit:ListPicker>

在代码隐藏中,我设置DataContext并预先选择当前选择(在OnNavigatedTo中)并记住当前选择(在NavigatedFrom中):

    public SelectOrCreateStage()
    {
        InitializeComponent();
        DataContext = App.ViewModel;
    }

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        StagesList.SelectedItem = App.ViewModel.SelectedProduct.Stage;
    }

    protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);
        App.ViewModel.SelectedProduct.Stage = (Stage)StagesList.SelectedItem;
    }

当OnNavigatedFrom()执行时,当前选择正确记录在模型中。声明后

        StagesList.SelectedItem = App.ViewModel.SelectedProduct.Stage;
在NavigatedTo中执行

(在SelectionChanged事件处理程序中验证),正确设置了选择。 OnApplyTemplate引发第二个SelectionChanged事件,使SelectedIndex保持正确的值!但是,视觉上

为什么会这样?怎么可以避免?设置ListPicker并预先选择不属于ItemsSource中第一项的项目的正确方法是什么?

0 个答案:

没有答案