我遇到了这个问题,我的列表框,notifypropertychange事件,并设置selectedindex = -1转换到下一页时。windows phone 7,selectedindex和propertychanged事件问题
基本上,我从列表中选择一个项目。这样做可以打开另一个页面来提供有关该项目的详细信息。但是,当我选择该项目时,我需要在转换到详细信息页面后将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.
}
这就是我所说的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.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;
};
}
任何人都知道这是为什么?
您能否给我们推理为什么您需要将SelectedIndex设置为-1?当然是 – ctacke
。当从选择中选择特定的供稿时,为了查看详细信息,以及何时详细信息,如果我点击详细信息的后退按钮,我无法在选择时选择相同的供稿。 – topcoderwannabe
所以这是它的问题,回来了,不能够选择相同的饲料。因此,如果我选择位置索引为47(第48个提要)的提要,我会查看详细信息并返回,直到更改索引后才能选择第48个提要。 – topcoderwannabe