在 WPF 中使用资源字典






3.71/5 (62投票s)
关于在 WPF 中使用资源字典的一些技巧
添加 WPF 资源字典
由于 WPF 应用程序具有丰富的媒体和图形支持,因此需要以可重用且管理良好的方式利用样式。 我们可以将样式定义在 WPF XAML 文件中,或者可以将所有有用的样式集中在一个资源字典文件中,供特定应用程序使用。 添加资源字典非常简单。 我们需要在解决方案资源管理器中选择项目或文件夹,然后右键单击并选择“添加”。 我们将获得一个名为“资源字典”的菜单项。 单击该菜单项将弹出“添加新项目”向导,并选择资源字典项目模板。 按照您的意愿重命名该项目。
在 ResouceDictionary
中,我们可以保存自定义样式、DataTemplates、ControlTemplates,甚至 Brush
、Color
、Background
和许多其他内容的自定义定义。 但是,重要的是我们必须为每个定义分配一个键,因为它是一个 Dictionary
。 或者,我们可以为样式命名。
在 XAML 中使用资源文件
在本节中,我们将了解如何将资源文件导入到用户控件、窗口或页面的 XAML 文件中。 下面提供了一个简单的代码列表作为演示。 由于我们可以为每个控件拥有一个资源字典,因此我们将其他资源文件合并到现有的资源字典中。
<Window x:Class="WPFDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="Resources/MyResourceDictionary.xaml">
</ResourceDictionary>
<ResourceDictionary
Source="Resources/OthersStyle.xaml">
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<Image Source="/WPFDemo;component/Images/AddResourceDictionary.jpg"></Image>
</Grid>
</Window>
在 C# 中使用资源文件
在某些情况下,我们需要从 C# 代码访问在项目中定义的资源字典。 如果我们已经在 XAML 中合并了资源字典,则可以使用 control.FindResource("KeyWillGoHere");
方法轻松访问内部资源。 但是,如果我们尚未在 XAML 中合并资源,但仍然需要使用资源字典,则可以选择直接在 C# 代码中使用这些资源。 这里提供了一个简单的代码片段以便更好地理解
public partial class Window1 : Window
{
private ResourceDictionary myresourcedictionary;
private ResourceDictionary mystyles;
public Window1()
{
InitializeComponent();
myresourcedictionary = new ResourceDictionary();
myresourcedictionary.Source =
new Uri("/WPFDemo;component/Resources/MyResourceDictionary.xaml",
UriKind.RelativeOrAbsolute);
mystyles = new ResourceDictionary();
mystyles.Source = new Uri("/WPFDemo;component/Resources/OthersStyle.xaml",
UriKind.RelativeOrAbsolute);
}
public void ApplyStyle()
{
Style mybuttonstyle = mystyles["MyStyle"] as Style;
Button mybutton = new Button();
mybutton.Style = mybuttonstyle;
}
}
我们使用 URI 来获取资源字典的内容。 我必须提到一件事,即在定义 URI 时,项目名称首先出现,然后是相对路径。 UriKind
选项非常重要。 如果我们没有提到 UriKind
,它将无法解析 URI 并找到资源。 由于这是一个资源字典,因此我们必须使用键访问样式,就像在普通字典中一样。
摘要
在这篇简短的文章中,我们已经了解了如何将 WPF ResourceDictionary
添加到我们的应用程序中,以及如何在 XAML 和 C# 中使用资源字典。 祝你好运,编码愉快!
历史
- 2009 年 4 月 11 日:初始版本