zoukankan      html  css  js  c++  java
  • WPF之资源

      我们把有用的东西称为资源,程序中存放数据的地方有很多,可以放在数据库里,可以存储在变量里,界于数据库存储与变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或损坏,为了避免丢失或损坏,编译器允许我们把外部文件编译进程序主体,称为程序主体不可分割的一部分,这就是传统意义上的程序资源,也成为二进制资源。

      WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源。每个界面元素都可以携带自己的资源并可被自己的子级元素共享。

      对象资源

      每个WPF的界面元素都具有一个名为Resource的属性。这个属性继承自FrameworkElement类,其类型为ResourceDictionayr。ResourceDictionary能够以“键-值”对的形式存储资源,当需要用到某个资源时,使用“键-值”对可以索引到资源对象。

      假如现在我们需要一个字符串资源,在TextBlock里显示,就可以如下方式实现:

    <Window x:Class="WpfApplication9.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:sys="clr-namespace:System;assembly=mscorlib"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <ResourceDictionary>
                <sys:String x:Key="str">Hello World</sys:String>
            </ResourceDictionary>
        </Window.Resources>
        <StackPanel>
            <TextBlock Text="{StaticResource str}" Margin="10"></TextBlock>
        </StackPanel>
    </Window>

      通过StaticResource使用资源,意味着程序载入内存时只使用一次,之后就不再访问这个资源了,如果这个资源发生了变化,程序也不会有任何变化;如果希望在资源发生变化时,程序也做出相应的改变,就需要通过DynamicResource使用资源。

      在检索资源时,先查找控件自己的Resource属性,如果没有这个资源程序会沿着逻辑树向上一级控件查找,如果连最顶级的容器都没有这个资源,程序会去查找Application.Resources,如果还么有找到,那就会抛出异常。

      在C#中使用资源,代码如下:

    string text = (string)this.FindResource("str");

      或者

    string text = (string)this.Resources["str"];
  • 相关阅读:
    机器学习笔记之数据预处理(Python实现)
    机器学习笔记之matplotlib绘图核心原理
    机器学习笔记之Matplotlib库legend() scatter() plot() figure() subplot()函数参数解释
    Kafka学习笔记之kafka常见报错及解决方法(topic类、生产消费类、启动类)
    Elasticsearch学习笔记之Prometheus监控ElasticSearch核心指标
    Kafka学习笔记之Kafka应用问题经验积累
    Kafka学习笔记之kafka.common.KafkaException: Should not set log end offset on partition
    CRM 价格更新
    定时 任务 C# 思路
    使用ExtentReports生成Testng测试报告
  • 原文地址:https://www.cnblogs.com/yijiaoyingbi/p/4894777.html
Copyright © 2011-2022 走看看