wpf中资源的使用

前言

在 WPF 中,"资源"允许你定义可重用的对象(如画笔、样式、模板、数据等),并在应用程序的不同部分甚至整个应用程序中引用它们,这有助于实现一致性、可维护性和 XAML 代码的简洁性。

1、应用程序级别的资源

将资源文件添加到App.xaml中,应用程序级别的资源可以在该程序的多个窗体中使用

csharp 复制代码
<Application x:Class="wpf资源.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:wpf资源"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <SolidColorBrush x:Key="GlobalBackgroundBrush" Color="Red" />
        <Style x:Key="GlobalButtonStyle" TargetType="Button">
            <Setter Property="FontSize" Value="14"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Background" Value="Blue"/>
        </Style>
    </Application.Resources>
</Application>

1)在MainWindow中调用GlobalButtonStyle

csharp 复制代码
 <Button Height="100" Content=" 123"  Style="{StaticResource GlobalButtonStyle}" />

运行结果:

2)在Window1中调用GlobalButtonStyle

csharp 复制代码
 <Button Height="100" Content=" 123"  Style="{StaticResource GlobalButtonStyle}" />

运行结果:

2、窗体级别的资源

在该窗体以及其子元素使用

csharp 复制代码
<Window.Resources>
            <Style x:Key="MainWindowlTextBlockStyle" TargetType="TextBlock">
                <Setter Property="FontSize" Value="14"/>
                <Setter Property="Foreground" Value="White"/>
                <Setter Property="Background" Value="Green" />
            </Style>
    </Window.Resources>

在MainWindow中调用MainWindowlTextBlockStyle

csharp 复制代码
 <TextBlock Height="100" Text =" 456"  Style="{StaticResource ResourceKey= MainWindowlTextBlockStyle}" />

3、元素级别的资源

只能在该元素以及其子元素中使用

csharp 复制代码
 <Grid>
        <Grid.Resources >
            <SolidColorBrush x:Key="PanelHighlightBrush" Color="Yellow"/>
        </Grid.Resources >
        <StackPanel Orientation="Vertical" >
            <TextBlock Height="100" Text =" 456"  Background ="{StaticResource ResourceKey= PanelHighlightBrush}" />
        </StackPanel >
    </Grid>

4、元素级别的资源

外部资源字典

1)添加外部资源

MainWindow.xaml中添加以下代码,代码在Window.Resources中定义了一个ResourceDictionary资源字典,将需要添加的外部资源全都放到ResourceDictionary.MergedDictionaries中,格式如:"pack://application:,/外部命名控件名;component/Dictionary1.xaml",如果component后面还跟了文件夹的话,则这个路径也要加上文件夹名。这里的代码命名控件名是WpfApp2,由于命名空间内直接包含了Dictionary1.xaml,所以component后面跟的是Dictionary1.xaml。

2)添加Window窗体级别的资源

Window窗体级别的资源放到ResourceDictionary.MergedDictionaries外部和ResourceDictionary内部,比如下面的ButtonColor。

csharp 复制代码
<Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source = "pack://application:,,,/WpfApp2;component/Dictionary1.xaml" />
            </ResourceDictionary.MergedDictionaries>
            <SolidColorBrush x:Key="ButtonColor" Color="red"/>
        </ResourceDictionary>
    </Window.Resources>

MainWindow调用

csharp 复制代码
<Button Height="100"  Background ="{StaticResource ResourceKey=Color_Active}" />

马工撰写的年入30万+C#上位机项目实战必备教程(点击下方链接即可访问文章目录)

1、《C#串口通信从入门到精通》

2、《C#与PLC通信从入门到精通 》

3、《C# Modbus通信从入门到精通》

4、《C#Socket通信从入门到精通 》

5、《C# MES通信从入门到精通》

6、《winform控件从入门到精通》

7、《C#操作MySql数据库从入门到精通》

相关推荐
泛凡(Linyongui)3 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
暴走约伯5 小时前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
信息安全失业大专人员6 小时前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
呆呆敲代码的小Y7 小时前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
淡海水8 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
椒颜皮皮虾྅11 小时前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
昂好的day11 小时前
C# 同步异步与多线程:Thread / Task / 线程池一次讲透(上篇)
开发语言·windows·c#
avi911112 小时前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
吃一碗粉只付一碗钱20 小时前
12-给SPA友好的401和403响应
c#·状态模式
caimouse1 天前
MonoDevelop 编译用户应用程序时调用的是哪个编译器
c#