listPicker未在完整模式下更新所选内容

本文关键字:更新 模式 listPicker | 更新日期: 2023-09-27 18:26:33

有人知道listpicker中有一个错误吗?当扩展模式仅设置为完全模式时,该错误会阻止它更改所选项目。由于某种原因,它总是返回到所选的默认项目。

listPicker未在完整模式下更新所选内容

我假设您的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
            }
        }  
    }

非常感谢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;
    }  
}