Windows phone 7,选择索引和属性更改事件问题
本文关键字:属性 事件 问题 索引 phone 选择 Windows | 更新日期: 2023-09-27 18:07:50
我有这个问题与我的列表框,notifypropertychange事件,并设置selecteindex = -1在过渡到下一页
基本上,我从列表中选择一个项目。在这样做时,它打开到另一个页面,以提供有关该项目的详细信息。但是,当我选择项目时,我需要在它转换到详细信息页面后将selecteindex设置为-1。
然而,当我编写代码时,一旦它达到selecteindex = -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.
}
这就是所谓的next,这是我的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行。selecteindex = 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;
};
}
有谁知道这是为什么吗?
我会在listbox_SelectionChanged方法中检查所选索引是否已经是-1。如果是,则返回,什么都不做。
private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (hello.SelectedIndex == -1) return;
NavigationService.Navigate(new Uri("/PivotPage1.xaml", UriKind.Relative));
hello.SelectedIndex = -1; //hello = listbox name.
}