应用资源与静态变量

时间:2013-12-08 07:52:32

标签: c# wpf xaml

在我的App.cs中我有以下

private static LayoutManager layoutManager;
public static LayoutManager LayoutManager
{ 
    get { return layoutManager ?? (layoutManager = new LayoutManager()); } 
    set { layoutManager = value; } 
}

我需要从另一个库中访问这个变量,所以我在App XAML中定义了它,所以我可以使用Application.Current.FindResource("LayoutManager"),而不必引用包含App的项目,因为我会得到循环依赖

<Managers:LayoutManager x:Key="LayoutManager"/>
  • 是向资源添加对象的最佳选择吗?
  • 在这种情况下最好的编程实践是什么?

1 个答案:

答案 0 :(得分:1)

这两种方法基本相同,区别主要是语义。

关于您的第一个问题,向资源字典添加条目会创建一个新对象,并将其放在该范围的字典中(应用程序,窗口,面板等),这适用于您放置在资源中的任何内容字典,所以真正的问题是放在那里。放在xaml中的资源通常由xaml代码(或影响它的东西)使用,它通常保留样式,动画等。当然,你可以在那里放置任何你喜欢的东西,但它不太常见。

至于针对这种情况的最佳实践,我认为将对象放在静态属性中会更好,因为您尝试在c#中访问它,而不是在xaml中访问它。它为您提供了一点性能提升,然后尝试找到资源,并且您不必依赖魔术字符串,如果属性发生更改,则不会产生编译时错误。