西安优秀的集团门户网站建设企业,免费网站建设ppt,平凉市住房和城乡建设局网站,年终总结免费ppt模板下载C# WPF入门学习主线篇#xff08;二十一#xff09;—— 静态资源和动态资源 欢迎来到C# WPF入门学习系列的第二十一篇。在上一章中#xff0c;我们介绍了WPF中的资源和样式。本篇文章将深入探讨静态资源#xff08;StaticResource#xff09;和动态资源#xff08;Dynam…C# WPF入门学习主线篇二十一—— 静态资源和动态资源 欢迎来到C# WPF入门学习系列的第二十一篇。在上一章中我们介绍了WPF中的资源和样式。本篇文章将深入探讨静态资源StaticResource和动态资源DynamicResource的区别和使用方法帮助您更好地理解和运用WPF的资源管理机制。
什么是静态资源和动态资源
在WPF中资源可以是颜色、字符串、样式、控件模板等对象这些对象可以在应用程序的不同部分中重用。WPF提供了两种主要的资源引用方式静态资源StaticResource和动态资源DynamicResource。
静态资源StaticResource
静态资源在XAML加载时解析。这意味着资源在应用程序启动时就被解析和分配一旦分配就不会更改。因此静态资源适用于那些在应用程序运行期间不会发生变化的资源。
动态资源DynamicResource
动态资源在运行时解析这使得资源可以在应用程序运行期间动态更改。动态资源适用于需要在应用程序运行过程中修改的资源如主题切换等。
静态资源的使用
静态资源的定义和使用非常简单。在XAML文件中我们可以通过 StaticResource 标记扩展来引用静态资源。
定义静态资源
Window x:ClassWpfApp.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleStatic and Dynamic Resources Height300 Width400Window.Resources!-- 定义一个静态资源 --SolidColorBrush x:KeyPrimaryBrush ColorBlue//Window.ResourcesGrid Background{StaticResource PrimaryBrush}TextBlock TextHello, WPF! ForegroundWhite HorizontalAlignmentCenter VerticalAlignmentCenter FontSize24//Grid
/Window在上面的代码中我们在 Window.Resources 中定义了一个名为 PrimaryBrush 的 SolidColorBrush 静态资源并在 Grid 的 Background 属性中使用了该资源。
动态资源的使用
动态资源在运行时解析可以在应用程序运行期间进行更改。
定义动态资源
Window x:ClassWpfApp.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleStatic and Dynamic Resources Height300 Width400Window.Resources!-- 定义一个动态资源 --SolidColorBrush x:KeyPrimaryBrush ColorBlue//Window.ResourcesGrid Background{DynamicResource PrimaryBrush}Button ContentChange Color ClickChangeColor_Click HorizontalAlignmentCenter VerticalAlignmentCenter//Grid
/Windowusing System.Windows;
using System.Windows.Media;namespace WpfApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void ChangeColor_Click(object sender, RoutedEventArgs e){// 动态更改资源的值this.Resources[PrimaryBrush] new SolidColorBrush(Colors.Red);}}
}在这个例子中我们定义了一个名为 PrimaryBrush 的动态资源并在按钮点击事件中更改了其颜色。
静态资源和动态资源的区别
加载时间
静态资源在XAML解析时加载因此在应用程序启动时就被固定下来不能在运行时动态更改。动态资源在运行时解析这使得它们可以在应用程序运行期间动态更改。
性能
静态资源由于在XAML解析时加载性能较高适用于不需要动态更改的资源。动态资源由于在运行时解析性能较低适用于需要动态更改的资源。
使用场景
静态资源适用于不需要在运行时更改的资源如固定的样式、颜色等。动态资源适用于需要在运行时动态更改的资源如主题切换、用户偏好设置等。
示例主题切换
下面是一个使用动态资源实现主题切换的简单示例
XAML代码
Window x:ClassWpfApp.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleStatic and Dynamic Resources Height300 Width400Window.Resources!-- 定义动态资源 --SolidColorBrush x:KeyBackgroundBrush ColorWhite/SolidColorBrush x:KeyForegroundBrush ColorBlack//Window.ResourcesGrid Background{DynamicResource BackgroundBrush}StackPanel HorizontalAlignmentCenter VerticalAlignmentCenterTextBlock TextWelcome to WPF Foreground{DynamicResource ForegroundBrush} FontSize24 Margin0,0,0,20/Button ContentSwitch to Dark Theme ClickSwitchTheme_Click Margin0,10//StackPanel/Grid
/Window后台代码
using System.Windows;
using System.Windows.Media;namespace WpfApp
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void SwitchTheme_Click(object sender, RoutedEventArgs e){// 切换到暗主题this.Resources[BackgroundBrush] new SolidColorBrush(Colors.Black);this.Resources[ForegroundBrush] new SolidColorBrush(Colors.White);}}
}在这个示例中我们定义了 BackgroundBrush 和 ForegroundBrush 两个动态资源并在按钮点击事件中更改它们的值以实现主题的切换。 接下来进行一个小作业根据上面的代码来修改成效果为下面的gif中的效果。点击对应按钮之后实现黑暗主题和白天主题之间的一个切换。答案会放在评论区中哦自己动手试试吧。 总结
本文深入探讨了WPF中的静态资源和动态资源。通过了解它们的定义、使用方法及区别您可以更好地选择和运用这些资源来构建灵活和高效的用户界面。静态资源适用于不需要在运行时更改的场景而动态资源则适用于需要在运行时动态更改的场景如主题切换。