有人知道listpicker中的一个错误,它会阻止它在扩展模式设置为完全模式时更改所选项目。它总是由于某种原因返回到所选的默认项目。
答案 0 :(得分:6)
我假设您的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
}
}
}
答案 1 :(得分:0)
非常感谢123税。在选择更改事件结束时将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;
}
}