假设我有一个松散的xaml文件,其中包含一个资源,键入“MyResource”,并且我通过ResourceDictionary.MergedDictionaries将该松散的xaml文件拖放到另外两个xaml文件中。现在假设我将以下代码行放在两个xaml文件的代码隐藏文件中:
object obj = FindResource("MyResource");
两个引用都是同一个对象,还是属于不同的对象?
谢谢, 戴夫
答案 0 :(得分:0)
答案取决于您如何加载松散的XAML文件。如果您加载一次并将相同的引用添加到两个不同的MergedDictionaries中,那么默认情况下您将获得与“MyResource”相同的引用。
如果您加载XAML文件两次,您将有效地创建ResourceDictionary的两个实例(以及您的资源的两个实例)。
在单个ResourceDictionary中,您可以指定是否使用x:Shared属性共享资源,默认情况下为true。将此设置为false将强制为资源的每个请求创建新实例。使用此属性有一些限制,这些限制在MSDN页面上进行了解释。