📜  XAML-资源

📅  最后修改于: 2020-11-18 10:33:53             🧑  作者: Mango


资源通常是与某个对象相关联的定义,而这些对象只是您预期会多次使用。它具有为控件或当前窗口本地存储数据或为整个应用程序全局存储数据的能力。

将对象定义为资源可以使我们从另一个地方访问它。因此,它允许可重用性。资源在资源字典中定义,任何对象都可以定义为有效地使其成为可共享资产的资源。为XAML资源指定了唯一键,并且使用该键,可以使用StaticResource标记扩展来引用它。

让我们再次看一个简单的示例,其中创建了两个带有某些属性的文本块,并且它们的前景色在Window.Resources中定义。

 
    
    
       
     
    
    
       
       
    
    
 

编译并执行以上代码后,将产生以下MainWindow。您可以看到两个带有蓝色前景色的文本块。该资源的优势在于,如果有多个文本块,并且您想更改其背景色,则只需在资源字典中进行更改即可。

资源资源

资源范围

资源是在资源字典中定义的,但是在很多地方都可以定义资源字典。在上面的示例中,在窗口/页面级别定义了资源字典。在哪个词典中定义资源会立即限制该资源的范围。因此,范围(即可以在何处使用资源)取决于定义资源的位置。

  • 在网格的资源字典中定义资源,该资源只能由该网格及其子元素访问。

  • 在窗口/页面上定义它,并且该窗口/页面上的所有元素都可以访问它。

  • 可以在App.xaml资源字典中找到App根目录。这是我们应用程序的根,因此此处定义的资源仅限于整个应用程序。

就资源范围而言,最常见的是应用程序级别,页面级别和特定元素级别,例如Grid,StackPanel等。

资源范围

资源字典

XAML应用程序中的资源字典意味着资源字典位于单独的文件中。几乎所有XAML应用程序都遵循它。在单独的文件中定义资源可以具有以下优点-

  • 资源字典中定义资源与UI相关代码之间的分隔。

  • 在单独的文件(例如App.xaml)中定义所有资源将使它们在整个App中都可用。

那么,如何在单独的文件中的资源字典中定义资源?好吧,这非常简单,只需按照以下步骤通过Visual Studio添加新的资源字典-

  • 在您的解决方案中,添加一个新文件夹并将其命名为ResourceDictionaries

  • 右键单击此文件夹,然后从“添加”子菜单项中选择“资源字典”,并将其命名为DictionaryWithBrush.xaml

让我们看一下相同的应用程序;现在仅在App级别中定义了资源字典。

这是MainWindow.xaml的XAML代码。

 
    
    
       
       
    
    
 

这是DictionaryWithBrush.xaml中的实现-

 
    
    
    
 

这是app.xaml中的实现-

 
    
    
       
    
    

编译并执行上述代码后,将产生以下输出-

资源资源

我们建议您执行上述代码,并尝试使用更多资源,例如背景色等。