首页 > 其他分享 >WPF资源管理:窥探外部、窗体、全局和动态资源的秘密!

WPF资源管理:窥探外部、窗体、全局和动态资源的秘密!

时间:2024-02-25 09:00:25浏览次数:24  
标签:全局 外部 应用程序 窗体 WPF 资源管理 资源

概述:WPF中的资源管理机制包括外部资源、窗体资源、全局资源和动态资源。通过这些资源,开发者能够在应用程序中有效地组织、重用样式和模板,实现灵活的设计和运行时更改。这四种资源类型分别适用于不同的应用场景,为WPF应用程序提供了强大的扩展性和可维护性。

在WPF(Windows Presentation Foundation)中,资源是一种重要的机制,用于管理和重用在应用程序中使用的元素。这些资源可以分为外部资源、窗体资源、全局资源和动态资源。

1. 外部资源

外部资源是存储在独立的XAML文件中的资源,可以在应用程序中引用和重用。使用外部资源的主要步骤如下:

步骤:

  1. 创建外部资源文件(例如,ExternalResource.xaml):
<!-- ExternalResource.xaml --> 
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
  <SolidColorBrush x:Key="ExternalBackgroundBrush" Color="LightGray"/> 
</ResourceDictionary>
  1. 在应用程序中引用外部资源
<Window x:Class="YourNamespace.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> 
<Window.Resources> <ResourceDictionary> 
<ResourceDictionary.MergedDictionaries> 
<ResourceDictionary Source="ExternalResource.xaml"/> 
</ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 
</Window.Resources> 
<Grid Background="{StaticResource ExternalBackgroundBrush}"> <!-- 窗体内容 --> 
</Grid> 
</Window>

2. 窗体资源

窗体资源是在窗体内部定义的资源,仅在该窗体中可用。这对于特定窗体的样式和模板非常有用。

示例:

<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">
    <Window.Resources>
        <!-- 窗体资源 -->
        <SolidColorBrush x:Key="WindowBackgroundBrush" Color="LightGray"/>
    </Window.Resources>

    <Grid Background="{StaticResource WindowBackgroundBrush}">
        <!-- 窗体内容 -->
    </Grid>
</Window>

3. 全局资源

全局资源是在App.xaml文件中定义的资源,可在整个应用程序中共享。通常用于定义全局样式和模板。

示例:

<Application x:Class="YourNamespace.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <!-- 全局资源 -->
        <Style TargetType="Button">
            <Setter Property="Background" Value="LightBlue"/>
            <Setter Property="Foreground" Value="DarkBlue"/>
        </Style>
    </Application.Resources>
</Application>

4. 动态资源

动态资源允许在运行时更改资源的值,使应用程序更加灵活。这通常用于实现主题切换等功能。

示例:

<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">
    <Window.Resources>
        <!-- 动态资源 -->
        <SolidColorBrush x:Key="DynamicBackgroundBrush" Color="LightGray"/>
    </Window.Resources>

    <Grid>
        <Button Content="Change Background" 
                Background="{DynamicResource DynamicBackgroundBrush}" 
                Click="ChangeBackground_Click"/>
    </Grid>
</Window>

在代码中通过C#修改动态资源:

private void ChangeBackground_Click(object sender, RoutedEventArgs e)
{
    // 获取动态资源并修改其值
    SolidColorBrush dynamicBrush = (SolidColorBrush)FindResource("DynamicBackgroundBrush");
    dynamicBrush.Color = Colors.Green;
}

以上是WPF中资源的四个主要类型,它们共同为开发者提供了一种强大而灵活的方式来管理和重用应用程序中的元素。

 

标签:全局,外部,应用程序,窗体,WPF,资源管理,资源
From: https://www.cnblogs.com/hanbing81868164/p/18031930

相关文章

  • WPF大展示专业指南:轻松实现多屏显示的绝技
     概述:WPF通过System.Windows.Forms.Screen类,实现多屏显示轻而易举。通过获取屏幕信息、确定窗体位置和设置窗体大小,可在大型展示或数据可视化应用中灵活利用多屏幕。示例代码清晰演示了如何在WPF中实现这一功能。在WPF(WindowsPresentationFoundation)中,实现多屏显示可以通过......
  • WPF 设备焦点捕获
    触摸等快速移动WPF元素时,因元素无法跟上元素移动速度,后续的移动事件无法触发导致移动操作停顿。这时候调用CaptureMouse捕获设备焦点,就可以支持设备快速移动操作。设备输入有三种鼠标、触笔、触摸,所以对应的设备焦点捕获也有三类:CaptureMouse、CaptureStylus、CaptureTouch项目......
  • C# 解决 WPF 导入项目报错 error : 找不到指定的 SDK
    参考MSB4236:找不到指定的SDK“name”2019:无法打开项目文件。无法找到.NETSDK环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8......
  • WPF 布局容器
    参考.NETAPIbrowserWPF-布局环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8.0.101手动安装Microsoft.NetSDK7.0.306......
  • Excel窗体控件笔记
    工作表控件分成2种表单控件(图片上面)ActiveX控件(图片下面)一,表单控件这种如果只是使用代码其实和我们直接在工作表里插入一个图形是一样的效果可以把一些参数直接设置到单元格里,不需要代码辅助,配合公式等可以实现一些自动化效果但是,设置不了一些颜色样式等等,看上去比较素......
  • 删除Windows 11 文件资源管理器 左侧的图标(最全) 文档、音乐、视频、图片、图库、主
    删除Windows11文件资源管理器左侧的图标(最全)文档、音乐、视频、图片、图库、主文件夹等1、删除此电脑(文件资源管理器)左侧的图标,文件夹下的全部文件夹都可以删除,推荐重命名一下跟之前不一样就好了,删除此电脑(文件资源管理器)左侧的图标,文件夹下的全部文件夹都可以删除,推......
  • 使用C# WPF写简单的桌面应用程序
    前言微软真是永远滴神,VisualStudio不愧是宇宙第一IDE,C#相比Java真的是语法简洁优雅案例实现了一个快速重命名的小程序,打包完以后的exe不到200KB,比Java轻的不是一点半点,而且在windows上执行效率很高,直接就可以在windows双击运行创建项目VisualStudio安装选择WPF选择.......
  • WPF PART_LeftThumb_DragDelta事件
    PART_LeftThumb_DragDelta事件是拖拽过程中实时触发的。当用户按住Thumb控件并拖动时,该事件会在每次鼠标或手指移动时实时触发,而不是按照时间间隔定时触发。这使得应用程序可以实时响应用户的操作,更新UI或执行其他操作。 DragDeltaEventArgs.HorizontalChange是指拖动操作期间......
  • 浅谈WPF之DataGrid动态生成列
    在日常开发中,DataGrid作为二维表格,非常适合数据的展示和统计。通常情况下,一般都有固定的格式和确定的数据列展示,但是在某些特殊情况下,也可能会需要用到动态生成列。本文以一些简单的小例子,简述在WPF开发中,如何动态生成DataGrid的行和列,仅供学习分享使用,如有不足之处,还请指正。 ......
  • 水资源管理的“千里眼”:揭秘管道蓄水可视化模型的力量
    随着水资源日益紧缺,合理、高效的水资源管理变得至关重要。而在这个领域,管道蓄水3D模型,让我们能够更直观、更深入地了解水资源的流动和储存情况。 一、揭秘管道蓄水可视化模型管道蓄水3D模型运用先进的数字孪生和3D建模技术,将水管道系统中的水流、水位、水质等数据进行实时采集......