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"/>
相关推荐
做个文艺程序员16 小时前
MQ第12篇:AI原生消息架构演进:从MQ到事件驱动的全链路设计
架构·消息队列·wpf·事件驱动架构·ai-native·cqrs
donk13143 天前
React Native for OpenHarmony 实战:三方库 react-native-circular-action-menu 的鸿蒙化适配指南
javascript·分布式·react native·react.js·wpf·harmonyos
donk13143 天前
React Native for OpenHarmony 实战:三方库 react-native-step-indicator 的鸿蒙化适配指南
分布式·react native·react.js·wpf·harmonyos
He BianGu3 天前
【笔记】WPF中RenderOptions类的详细功能
笔记·wpf
VidDown4 天前
上线三个月后的第一次事故:一个 Django 服务的日志、监控与故障复盘
数据库·python·django·wpf·音视频·视频编解码
He BianGu4 天前
【笔记】WPF中CachingHint的功能
笔记·wpf
He BianGu4 天前
【笔记】在WPF中BitmapScalingMode的作用
笔记·wpf
Vae_Mars4 天前
幂等性学习笔记
笔记·学习·wpf
samble5 天前
从零搭建灌装监控系统(十九):单元测试实战,xUnit + 内存SQLite + 反射测试私有方法
c#·wpf·mvvm·modbus·工业控制
光泽雨6 天前
路由概念和路由事件 继承链路 RadioButton的事件解析
wpf