Я предполагаю, что в вашем Page_Loaded есть некоторый код, который заполняет и / или устанавливает SelectedIndex для ListPicker.
Вам необходимо убедиться, что вы устанавливаете значение только при входе на страницу.
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
}
}
}