c# - 创建全局集合并从所有页面访问它 (C# Windows)

标签 c# wpf xaml windows-runtime windows-phone-8.1

我想要一个全局集合,我可以在任何页面上访问/编辑它,即 SpenderList

我在 App.xaml.cs 中创建了一个 ObservableCollection 的实例:

namespace v003
{
    public sealed partial class App : Application
    {
        public ObservableCollection<Spender> SpenderList = new ObservableCollection<Spender>();

        public App()
        {
            this.InitializeComponent();
            this.Suspending += this.OnSuspending;
        }
          ...

    }
}

当我在页面 (MainPage.xaml.cs) 上键入 SpenderList 时,智能感知不会显示该集合。

如何从 MainPage.xaml.cs 和其他页面访问此集合?

注意:当我在 MainPage.xaml.cs 中声明该实例时,我的所有后续代码都有效,因此自定义类 Spender 没有问题。

另外,我想听听您对这种应用程序设计方式的看法。基本上所有任务都基于此集合中的项目,我希望从任何页面执行的对此集合及其项目的任何更改都是全局的。

最佳答案

你需要投:

 ((App)Application.Current).SpenderList 

或者让它成为静态的:

  public static ObservableCollection<Spender> SpenderList = new ObservableCollection<Spender>();

然后你像这样访问它:

  App.SpenderList 

通常你应该尽量避免全局可访问的静态变量。

关于c# - 创建全局集合并从所有页面访问它 (C# Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339510/

相关文章:

xaml - 应用程序栏 Windows Phone

c# - 仅使用一个(根)记录器时的 Log4net 重复条目

c# - 从 USB 串行端口读取时,SerialPort.BaseStream.ReadAsync 丢弃或扰乱字节

wpf - 从 WPF 到 WinForms 的气泡鼠标事件

xaml - 来自 XML 文件的数据绑定(bind) [UWP]

c# - 如何在选择 TextBlock 中的文本的位置显示弹出窗口

c# - 使用 Moq 模拟来自另一个 Mocked 类型的返回类型

c# - 如何在 asp.net 中编辑数据集列值

c# - 文本框静态值+文本

c# - WPF 组合框以编程方式隐藏(禁用)下拉按钮