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;
            };
    }
有谁知道这是为什么吗?

Windows phone 7,选择索引和属性更改事件问题

我会在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.
}