リストボックス、notifypropertychangeイベントでこの問題が発生し、次のページに移行するときにselectedindex=-1を設定しています。
基本的にはリストからアイテムを選びます。そうすることで、アイテムに関する詳細を提供する別のページが開きます。ただし、アイテムを選択するときは、詳細ページに移行した後、selectedindexを-1に設定する必要があります。
それでも、私がコードを書くとき、それがselectedindex=-1に達すると; 行では、propertychangeイベントが発生したため、関数が再度呼び出されます。次に、アプリケーションが中断する詳細ページにnull値を渡します。
これが私の関連コードです:
選択するフィードのリスト。特定のものを選択すると、Listbox_SelectionChangedが起動します。
public UserSubmitted()
{
InitializeComponent();
Loaded += delegate(object sender, RoutedEventArgs e)
{
this.DataContext = App.ViewModel;
};
}
private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
NavigationService.Navigate(new Uri("/PivotPage1.xaml", UriKind.Relative));
hello.SelectedIndex = -1; //hello = listbox name.
}
これが次に呼ばれるもので、私のViewDataモデルです。PropertyChangedイベントで開始し、送信者を比較します。次に、SelectedItemの設定に進みます。
public ObservableCollection<RssItem> FeedItems
{
get { return _feedItems; }
set
{
if (_feedItems == value)
return;
_feedItems = value;
NotifyPropertyChanged(this, new PropertyChangedEventArgs("FeedItems"));
}
}
public string FeedTitle
{
get { return _FeedTitle; }
set
{
if (_FeedTitle == value)
return;
_FeedTitle = value;
NotifyPropertyChanged(this, new PropertyChangedEventArgs("FeedTitle"));
}
}
public RssItem SelectedItem
{
get { return _SelectedItem; }
set
{
if (_SelectedItem == value)
return;
_SelectedItem = value;
NotifyPropertyChanged(this, new PropertyChangedEventArgs("SelectedItem"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (PropertyChanged != null)
PropertyChanged(sender, args);
}
次に、次の行に進みます。hello.SelectedIndex = 1; ここで、上記のコードを再度実行しますが、すべてをnullとして渡します(すべて-1に設定されているため)。
次に、この情報をピボットページ(詳細ページ)に渡します。
public PivotPage1()
{
InitializeComponent();
Loaded += (sender, e) =>
{
this.DataContext = App.ViewModel;
var selectedItem = App.ViewModel.SelectedItem;
var pi = ItemPivot.Items.First(p => p == selectedItem); //breaks here as null.
ItemPivot.SelectedItem = pi;
};
}
誰もがこれがなぜであるか知っていますか?