У меня проблема с моим списком, событием notifypropertychange и установкой selectedindex = -1 при переходе на следующую страницу.
В основном я выбираю элемент из списка.При этом он открывает другую страницу, на которой можно найти подробную информацию об элементе.Однако, когда я выбираю элемент, мне нужно установить для selectedindex значение -1 после того, как он перейдет на страницу сведений.линия, она вызывает функцию снова из-за запуска события propertychange.Затем он передает нулевое значение на страницу сведений, где приложение прерывается.
Вот мой соответствующий код:
список каналов для выбора.После того, как вы выберете конкретную, срабатывает 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;где он снова проходит через вышеуказанный код, но передает все как ноль (так как все установлено в -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;
};
}
кто-нибудь знает, почему это так?