📅  最后修改于: 2020-11-18 09:55:05             🧑  作者: Mango
资源通常是与某个对象相关联的定义,而这些对象只是您预期会多次使用。它可以在本地为控件或当前窗口存储数据,也可以为整个应用程序全局存储数据。
将对象定义为资源可以使我们从另一个地方访问它。这意味着该对象可以重复使用。资源在资源字典中定义,任何对象都可以定义为有效地使其成为可共享资产的资源。为XAML资源指定了唯一键,并且可以使用StaticResource标记扩展来引用该键。
资源可以有两种类型-
StaticResource是一次性查找,而DynamicResource的工作方式更像是数据绑定。它记住一个属性与一个特定的资源密钥相关联。如果与该键关联的对象发生更改,则动态资源将更新目标属性。
这是SolidColorBrush资源的简单应用程序。
让我们创建一个新的WPF项目,名称为WPFResouces 。
拖动两个矩形并设置其属性,如以下XAML代码所示。
在上面的XAML代码中,您可以看到一个矩形具有StaticResource,另一个矩形具有DynamicResource,并且brushResource的颜色为Bisque。
当您编译并执行代码时,它将产生以下MainWindow。
当您单击“更改资源”按钮时,您将看到带有DynamicResource的矩形将其颜色更改为红色。
资源是在资源字典中定义的,但是可以在许多地方定义资源字典。在上面的示例中,在窗口/页面级别定义了资源字典。在哪个词典中定义资源会立即限制该资源的范围。因此,范围(即可以在何处使用资源)取决于定义资源的位置。
在网格的资源字典中定义资源,该资源只能由该网格及其子元素访问。
在窗口/页面上定义它,并且该窗口/页面上的所有元素都可以访问它。
可以在App.xaml资源字典中找到应用程序根目录。这是我们应用程序的根,因此此处定义的资源适用于整个应用程序。
就资源范围而言,最常见的是应用程序级别,页面级别和特定元素级别,例如Grid,StackPanel等。
上面的应用程序在其窗口/页面级别具有资源。
XAML应用程序中的资源词典意味着资源词典保存在单独的文件中。几乎所有XAML应用程序都遵循它。在单独的文件中定义资源可以具有以下优点-
资源字典中定义资源与UI相关代码之间的分隔。
在单独的文件(例如App.xaml)中定义所有资源将使它们在整个应用程序中可用。
那么,如何在单独的文件中的资源字典中定义资源?好吧,这非常简单,只需按照以下步骤通过Visual Studio添加新的资源字典-
在您的解决方案中,添加一个新文件夹并将其命名为ResourceDictionaries 。
右键单击此文件夹,然后从“添加”子菜单项中选择“资源字典”,并将其命名为DictionaryWithBrush.xaml
现在让我们以相同的示例为例,但是在这里,我们将在应用程序级别定义资源字典。 MainWindow.xaml的XAML代码如下-
这是DictionaryWithBrush.xaml中的实现-
这是app.xaml中的实现-
编译并执行上述代码后,将产生以下输出-
当您单击更改资源按钮时,矩形将其颜色更改为红色。
我们建议您执行上面的代码,然后尝试更多资源(例如,背景色)。