首页 > 其他分享 >06 资源的使用

06 资源的使用

时间:2024-10-11 14:49:39浏览次数:9  
标签:控件 06 定义 示例 Button 使用 动态 资源

06 资源的使用

资源是可以在应用中的不同位置重复使用的对象。 资源的示例包括画笔和样式。

<Window.Resources>
    <!--定义颜色资源-->
    <SolidColorBrush x:Key="MyBrush" Color="#05E0E9"/>
    <!--定义样式资源-->
    <Style TargetType="Border" x:Key="borderStyle">
        <!--使用颜色资源-->
        <Setter Property="Background" Value="{StaticResource MyBrush}" />
        <Setter Property="BorderThickness" Value="20" />
        <Setter Property="BorderBrush">
            <Setter.Value>
                <LinearGradientBrush>
                    <GradientStop Offset="0.0" Color="#4E1A3D"/>
                    <GradientStop Offset="1.0" Color="Salmon"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<!--使用样式资源-->
<Border Style="{StaticResource borderStyle}"></Border>

每个框架级元素都具有 Resources 属性,该属性是包含已定义资源的 ResourceDictionary 类型。 你可以在任何元素上定义资源,例如 Button。 但是,最常在根元素上定义资源,本示例中的根元素为 Window

资源字典中的每个资源都必须具有唯一键。 在标记中定义资源时,可通过 x:Key 指令来分配唯一键。 通常情况下,这个键是一个字符串;

你可以使用具有资源标记扩展语法(指定资源的键名)的已定义资源。 例如,将资源用作另一个元素上的属性的值。

<Button Background="{StaticResource MyBrush}"/>
<Ellipse Fill="{StaticResource MyBrush}"/>

在前面的示例中,如果 XAML 加载程序处理 ButtonBackground 属性的值 {StaticResource MyBrush}​,则资源查找逻辑会首先检查 Button​ 元素的资源字典。 如果 Button​ 没有资源键 MyBrush​ 的定义(在该示例中没有;其资源集合为空),则查找逻辑接下来会检查 Button​ 的父元素。 如果未在父级上定义资源,会继续向上检查对象的逻辑树,直到找到它。

静态和动态资源

资源可引用为静态资源或动态资源。 可通过使用 StaticResource 标记扩展DynamicResource 标记扩展创建引用。

  • StaticResource​通过替换已定义资源的值(x:Key)来为 XAML 属性提供值。
  • DynamicResource ​通过将值推迟为对资源的运行时引用来为XAML 属性提供值。
  • 动态资源引用强制在每次访问此类资源时都重新进行查找。

通常来说,不需要在运行时更改的资源使用静态资源;而需要在运行时更改的资源使用动态资源。动态资源需要使用的系统开销大于静态资源的系统开销。

<Window.Resources>
    <!--定义颜色资源-->
    <SolidColorBrush x:Key="MyBrush" Color="#05E0E9"/>
</Window.Resources>
<StackPanel>
    <Label Content="静态绑定" Background="{StaticResource MyBrush}"/>
    <Label Content="动态绑定" Background="{DynamicResource MyBrush}"/>
    <Button Content="修改颜色" Click="Button_Click"/>
</StackPanel>
private void Button_Click(object sender, RoutedEventArgs e)
{
    Resources["MyBrush"] = new SolidColorBrush(Colors.Red);
}

当按钮点击修改资源时,窗体展示效果如图

image

image

由此可见,更改资源时,动态引用的控件样式发生变化

再看另一个例子,代码如下,使用StaticResource绑定到自身资源以及当前控件下面定义的资源时,会抛出错误。这是因为静态资源是从自身控件容器开始向上依次查找解析的,而动态资源则是在运行期间xaml解析完成后进行查找解析的。

image

总结

  • 资源发生变化时控件绑定也需要变化时使用动态资源,资源不会发生变化时用静态
  • 资源定义在使用下面时必须用动态

标签:控件,06,定义,示例,Button,使用,动态,资源
From: https://www.cnblogs.com/laoguonana/p/18458360/06-resource-use-z1qewqf

相关文章

  • 迅为itop-3568开发板AMP双系统使用手册之编译AMP镜像
       瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系......
  • 关于不建议使用北京新网数码信息技术公司的服务器和虚拟机的说明(重要说明)
    尊敬的用户们,我们注意到了关于北京新网数码信息技术有限公司服务器和虚拟机服务的一些用户反馈,特别是关于虚拟机不支持根目录设置、免费查杀以及WAF防护效果的问题。此外,还有用户提到云主机的保护措施不到位,并且实际提供的防护服务与官网描述不匹配。这些问题可能会影响到用户......
  • Android & iOS 使用 ARMS 用户体验监控(RUM)的最佳实践
    作者:元泊引言背景信息随着移动互联网技术的持续演进与全民互联网时代的深入,用户在Android、iOS应用程序、小程序、H5游戏及网页等多元化平台上的交互时长显著增长。这一趋势加剧了用户体验(UX)场景的复杂性,并对跨设备及多样网络环境下的性能监控提出了更高要求。在此背景下,深......
  • 如何使用 Ansible 管理多阶段环境
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。介绍Ansible是一个强大的配置管理系统,用于在不同环境中设置和管理基础设施和应用程序。虽然Ansible提供了易于阅读的语法、灵活的工作流程和强大的工具,但在管理大量主机......
  • 2019-3-8-为何使用-DirectComposition
    titleauthordateCreateTimecategories为何使用DirectCompositionlindexi2019-3-88:56:9+08002018-04-1809:44:40+0800windowsDirectComposition本文主要翻译WhyuseDirectComposition,介绍DirectComposition的功能和优点。创建更加迷人的界面虽然界面创建好看是设计师的能......
  • Jupyter Notebook 中同时使用 Python 和 R
    要在JupyterNotebook中同时使用Python和R,可以通过rpy2库来实现。以下是具体步骤:安装rpy2(如果尚未安装):pipinstallrpy2在JupyterNotebook中加载R包:可以在Python代码单元中使用rpy2的importr函数来加载R包。下面是一个示例代码,展示如何加载neuroba......
  • 【软件教程OBS下载使用】一篇文章教会你如何下载安装使用OBS-Studio
    OBSStudio是全新的OBS(OpenBroadcasterSoftware),是一款广泛应用的视频直播录制软件,跟经典版的区别就是,音频分路简单,在不出错的情况下性能优于经典版。可以说是高级版,目前仍然处于初期阶段,比起经典版,错误修复频繁,对于插件的兼容性情况不如经典版,错误修复频繁,对于插件的兼容......
  • 使用Go语言破解滑块验证码的完整流程
    在本文中,我们将通过Go语言破解滑块验证码,逐步讲解如何计算滑块移动距离、生成轨迹并提交验证请求。下载验证码图片使用Go的net/http库来获取验证码图片,并保存到本地。packagemainimport("fmt""io/ioutil""net/http""os")funcdownloadImage(urlstring,fileP......
  • AI人工智能一键生成鬼故事民间故事免费软件白嫖使用
    在这个数字化和创意爆炸的时代,武侠和玄幻题材的作品一直深受广大观众的喜爱。它们不仅仅是文字和图片的展现,更是通过视频这一动态媒介,将观众带入一个充满神秘和冒险的世界。现在,我们自豪地推出了一款革命性的AI工具,它能够将您的创意和想象转化为令人惊叹的中视频,让您的武侠......
  • AI人工智能一键生成鬼故事民间故事免费软件白嫖使用
    在这个数字化和创意爆炸的时代,武侠和玄幻题材的作品一直深受广大观众的喜爱。它们不仅仅是文字和图片的展现,更是通过视频这一动态媒介,将观众带入一个充满神秘和冒险的世界。现在,我们自豪地推出了一款革命性的AI工具,它能够将您的创意和想象转化为令人惊叹的中视频,让您的武侠......