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"/>
相关推荐
当下就是最好2 小时前
WPF应用程序的生命周期-笔记
wpf
九鼎科技-Leo16 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
麻花20131 天前
C#之WPF的C1FlexGrid空间的行加载事件和列事件变更处理动态加载的枚举值
开发语言·c#·wpf
lcintj1 天前
【WPF】Prism学习(九)
学习·wpf·prism
界面开发小八哥1 天前
界面控件DevExpress WPF中文教程:网格视图数据布局的列和卡片字段
wpf·界面控件·devexpress·ui开发·用户界面
△曉風殘月〆1 天前
如何在WPF中嵌入其它程序
wpf
Crazy Struggle1 天前
功能齐全的 WPF 自定义控件资源库(收藏版)
.net·wpf·ui控件库
shepherd枸杞泡茶2 天前
WPF动画
c#·.net·wpf
lcintj2 天前
【WPF】Prism学习(十)
学习·wpf·prism
wyh要好好学习2 天前
WPF数据加载时添加进度条
ui·wpf