WPF 引用动/静态资源示例

文章目录

      • [1. 定义和引用静态资源](#1. 定义和引用静态资源)
        • [1.1 定义资源](#1.1 定义资源)
        • [1.2 引用资源](#1.2 引用资源)
      • [2. 使用外部 ResourceDictionary](#2. 使用外部 ResourceDictionary)
        • [2.1 创建 ResourceDictionary 文件](#2.1 创建 ResourceDictionary 文件)
        • [2.2 引用 ResourceDictionary 文件](#2.2 引用 ResourceDictionary 文件)
        • [2.3 使用资源](#2.3 使用资源)
      • [3. 使用 DynamicResource](#3. 使用 DynamicResource)

在 WPF (Windows Presentation Foundation) 中,引用静态资源(例如颜色、样式、模板等)可以通过多种方式完成,具体取决于你要引用资源的位置和类型。以下是一些常见的方法:

1. 定义和引用静态资源

1.1 定义资源

通常,你会在 ResourceDictionary 中定义静态资源。资源可以定义在 App.xaml 文件中,也可以在单独的 ResourceDictionary 文件中。下面是一个在 App.xaml 中定义静态资源的例子:

html 复制代码
<Application x:Class="YourNamespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <Color x:Key="MyColor">#FF00FF</Color>
            <Style x:Key="MyButtonStyle" TargetType="Button">
                <Setter Property="Background" Value="{StaticResource MyColor}"/>
                <Setter Property="Foreground" Value="White"/>
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>
1.2 引用资源

在 XAML 文件中引用静态资源时,可以使用 {StaticResource} 标记扩展。例如,在某个 Window 或 UserControl 中引用上面定义的资源:

html 复制代码
<Window x:Class="YourNamespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button Style="{StaticResource MyButtonStyle}" Content="Click Me"/>
    </Grid>
</Window>

2. 使用外部 ResourceDictionary

可以将资源定义放在单独的 .xaml 文件中,然后在需要的地方进行引用。

2.1 创建 ResourceDictionary 文件

创建一个名为 Themes/Resources.xaml 的文件:

html 复制代码
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Color x:Key="MyColor">#FF00FF</Color>
    <Style x:Key="MyButtonStyle" TargetType="Button">
        <Setter Property="Background" Value="{StaticResource MyColor}"/>
        <Setter Property="Foreground" Value="White"/>
    </Style>
</ResourceDictionary>
2.2 引用 ResourceDictionary 文件

在 App.xaml 中引用该资源文件:

html 复制代码
<Application x:Class="YourNamespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Themes/Resources.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
2.3 使用资源

在窗口或控件中使用资源,与前面的例子一样:

html 复制代码
<Button Style="{StaticResource MyButtonStyle}" Content="Click Me"/>

3. 使用 DynamicResource

DynamicResource 与 StaticResource 类似,但是 DynamicResource 允许在运行时更改资源。如果你需要动态地切换主题或更改样式,这可能会很有用。

html 复制代码
<Button Style="{DynamicResource MyButtonStyle}" Content="Click Me"/>
相关推荐
huizhixue-IT18 分钟前
华为存储考试内容&HCIP-Storage
wpf
桂月二二16 小时前
实时事件流处理架构的容错设计
架构·wpf
源之缘-OFD先行者19 小时前
GMap.NET + WPF:构建高性能 ADS-B 航空器追踪平台
.net·wpf·ads-b
Marzlam20 小时前
WPF学习路线
wpf
weixin_535455791 天前
WPF设计学习记录滴滴滴2
学习·wpf
^@^lemon tea^@^1 天前
WPF 浅述IsHitTestVisible属性
wpf·wpf 穿透
lixy5791 天前
C# WPF 命令机制(关闭CanExecute自动触发,改手动)
c#·wpf
Marzlam1 天前
一文了解WPF技术简介
wpf
arriettyandray2 天前
C#/WPF学习系列之问题记录——使用不流畅
c#·wpf
勘察加熊人2 天前
wpf+c#路径迷宫鼠标绘制
开发语言·c#·wpf