【问题标题】:Update Listbox with item on navigation使用导航项更新列表框
【发布时间】:2015-12-06 05:31:32
【问题描述】:

当我从一个页面导航到另一个页面时,我传递了一个类对象并添加到列表视图。但我面临的问题是,每次导航页面时,都会将项目添加到列表框中,但之前添加的项目会被删除。

谁能帮我解决这个问题以及如何检索上一个列表框项?

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if ((App.Current as App).isThereAnyChange)
    {
        getitem();
        changeUI();
    } 
}

private void changeUI()
{
    //throw new NotImplementedException();
    txt1.Text = "";
    items.Add(item1);
    Deployment.Current.Dispatcher.BeginInvoke(() =>
        {
            this.sniplist.ItemsSource = items;
        });
}

private void getitem()
{
    //  throw new NotImplementedException();
    item1 = PhoneApplicationService.Current.State["item"] as Item;
    // Debug.WriteLine(item1.description);
}

【问题讨论】:

  • 项目集合是页面的成员吗?如果是这样,那么每次创建页面的新实例时,您都会创建一个新的集合...
  • @Jogy Yes items 是 ObservableCollection,它是页面的一部分。
  • 更好的设计是创建一个单独的类来保存 ObservableCollection,并实例化该类一次,例如在 App.xaml.cs 中。
  • @Jogy 你能举个例子解释一下吗?

标签: c# windows-phone-8


【解决方案1】:

在您的 ....xaml.cs 文件中保留一个静态项

static List<object> listSrc = new List<object>();

override OnNavigatedTo()
{
   listSrc.Add("whatever you want");
   sniplist.ItemsSource= listSrc;
}

【讨论】:

  • 是的,但我想在第一次添加项目时将 UI 从文本块更改为 Listview。
  • 这会在每次调用 OnNavigatedTo 方法时增加 List 项的计数吗?
  • Thanx @Kowalski 它解决了我的问题,但现在的问题是,当我使用 ContextMenu 删除项目时,项目会被删除。但是在列表中,如果只有一个项目,则该项目不会被删除。请回复。
  • 我无法理解您的问题,但您为什么在删除 ListItem 时不删除项目 listSrc ?或者只是保留另一个静态列表,哪些项目被删除。如果之前删除了项目,请始终控制它在“listSrc”中添加项目。
【解决方案2】:

这里是一个简单的设置:

public class MainViewModel
{
  public ObservableCollection<Item> Items { get; private set; }

  public MainViewModel() { Items = new ObservableCollection<Item>(); }
}

在 App.xaml.cs 中:

public partial class App : Application
{
  private static MainViewModel viewModel = new MainViewModel();
  public static MainViewModel ViewModel { get { return viewModel; } }
  ...

然后您可以简单地使用 App.ViewModel 从任何页面访问该类,并且它将通过页面导航持续存在。

【讨论】:

  • 谢谢@Jogy,我会尝试实现它,如果解决了我的问题,我会回复你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多