需要访问所有Silverlight视图中的全局通用列表

时间:2011-01-26 15:56:32

标签: silverlight class properties

我有一个通用列表,在首次使用某个视图时会加载。现在我需要从项目中的所有视图访问此列表。

我一直在尝试在App类中使用Public Property。问题是,我似乎无法从其他类/视图代码访问该属性(尝试App.Current)。

如何访问App类中定义的公共属性通用列表?

这是在VB中。

感谢。

1 个答案:

答案 0 :(得分:1)

我发现做这种事情的最好方法是创建一个静态类(称为“Globals”或“Config”或类似的东西),并创建一个包含要引用的列表的静态属性。所以它可能看起来像这样:

public static class Globals
{
    public static List<Customer> AllCustomers {get; set; }
}

或者在VB.NET中:

Private Shared m_AllCustomers as List(of Customer)
Public Shared Property AllCustomers As List(of Customer)
   Get
      Return m_AllCustomers
   End Get
   Set(ByVal Value as List(of Customer))
      m_AllCustomers = Value
   End Set
End Property

然后,您可以从任何需要的地方获取/设置该属性:

Globals.AllCustomers = new List<Customer>();

或者:

 Globals.AllCustomers = New List(Of Customer)

当然,像这样的全局变量通常不是一个好主意,但有时它们是最简单的解决方案。在我看来,将它们放在类而不是VB.NET模块中也是一个好主意,因为它为值添加了一个命名空间,而不是将它们放在全局命名空间中。这有点模块化。

如果您坚持将此作为App.Current的属性,则需要将App.Current转换为您创建的实际类,即:

var allCustomers = ((App)App.Current).AllCustomers;

但我通常会避免将这些属性添加到我的App类中,因为这会让他们更难测试并打破单一责任的想法。