相关文章推荐
悲伤的拖把  ·  一款软件无法正常打开,疑似WPF工作异常,是 ...·  1 月前    · 
高大的高山  ·  【wpf】ListView 和 ...·  1 月前    · 
气宇轩昂的春卷  ·  WPF ListView关闭选择开发者社区·  1 月前    · 
爱搭讪的蚂蚁  ·  WPF 和 Windows Forms ...·  4 天前    · 
刀枪不入的红薯  ·  vue中通过postMessage传值,通过 ...·  2 年前    · 
乐观的青蛙  ·  Debezium同步多个表投递到一个Topi ...·  2 年前    · 
没有腹肌的开水瓶  ·  用户对问题“如何使用Swift ...·  2 年前    · 
豪情万千的吐司  ·  spring-boot集成mqtt传输协议, ...·  2 年前    · 
胡子拉碴的斑马  ·  树形结构!别再用递归实现了,这才是最佳的方案 ...·  2 年前    · 
Code  ›  WPF 教程(wpf架构)开发者社区
string wpf
https://cloud.tencent.com/developer/article/2062889
叛逆的警车
2 年前
全栈程序员站长
0 篇文章

WPF 教程(wpf架构)

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
全栈程序员站长
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > WPF 教程(wpf架构)

WPF 教程(wpf架构)

作者头像
全栈程序员站长
发布 于 2022-07-31 13:59:19
1.3K 0
发布 于 2022-07-31 13:59:19
举报

大家好,又见面了,我是你们的朋友全栈君。

WPF介绍了一个非常方便的概念:把数据储存为一种资源,无论是本地控件、本地窗口还是全局应用。数据可以是任何你想要的东西,从实际的信息到WPF控件的层次结构都行。这非常有用,你可以把数据放在一个地方,然后在其他地方调用它。

这个概念被广泛用在样式和模版,我们后面会详细讲到。也可以用在很多别的地方,就像本章要说明的地方,例子如下:

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.WPF_Application.ResourceSample"
        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="ResourceSample" Height="150" Width="350">
    <Window.Resources>
        <sys:String x:Key="strHelloWorld">Hello, world!</sys:String>
    </Window.Resources>
    <StackPanel Margin="10">
        <TextBlock Text="{StaticResource strHelloWorld}" FontSize="56" />
        <TextBlock>Just another "<TextBlock Text="{StaticResource strHelloWorld}" />" example, but with resources!</TextBlock>
    </StackPanel>
</Window></span>
资源使用x:Key属性来定义一个关键字,使用该关键字,就可以从应用的其他地方来引用了。你需要用到StaticResource这个标记扩展符。在上面的例子中,我定义了一个简单的字符串(Hello,world!),然后在两个不同的文本块里面进行引用。

StaticResource与DynamicResource

上面的例子我用了StaticResource这个标记扩展符来引用资源,其实还有另外一种形式:DynamicResource(动态资源)。

两者主要的区别是,静态资源只在XAML加载的时候引用一次。如果这个资源后面被修改了,并不会在前面引用的地方生效。动态资源正好相反,在需要时才引用,因此所做的更改都会影响到引用的地方。打个比方,一个是绑定到一个静态值,一个是绑定一个函数,这个函数监视值,每当值发生变化的时候发送给你。尽管严格意义上来讲不是这样的,但你可以这么理解,也就明白了什么时候用,用哪一种。动态资源也可以只在运行时使用,譬如在应用启动的时候从后台代码添加进来。

其他资源类型

共享一个简单的字符串其实是很容易的,然而,你可以做的更多。下面的例子,我将存储一个字符串数组,以及一个用于背景的渐变画笔。这应该让你明白你能用资源做很多事情。

<span style="font-size:14px;"><Window x:Class="WpfTutorialSamples.WPF_Application.ExtendedResourceSample"
        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="ExtendedResourceSample" Height="160" Width="300"
        Background="{DynamicResource WindowBackgroundBrush}">
    <Window.Resources>
        <sys:String x:Key="ComboBoxTitle">Items:</sys:String>
        <x:Array x:Key="ComboBoxItems" Type="sys:String">
            <sys:String>Item #1</sys:String>
            <sys:String>Item #2</sys:String>
            <sys:String>Item #3</sys:String>
        </x:Array>
        <LinearGradientBrush x:Key="WindowBackgroundBrush">
            <GradientStop Offset="0" Color="Silver"/>
            <GradientStop Offset="1" Color="Gray"/>
        </LinearGradientBrush>
    </Window.Resources>
    <StackPanel Margin="10">
        <Label Content="{StaticResource ComboBoxTitle}" />
        <ComboBox ItemsSource="{StaticResource ComboBoxItems}" />
 
推荐文章
悲伤的拖把  ·  一款软件无法正常打开,疑似WPF工作异常,是不是.NET框架的问题? - Microsoft Q&A
1 月前
高大的高山  ·  【wpf】ListView 和 ItemsControl 的一点区别 - 宋桓公
1 月前
气宇轩昂的春卷  ·  WPF ListView关闭选择开发者社区
1 月前
爱搭讪的蚂蚁  ·  WPF 和 Windows Forms 互操作 | Microsoft Learn
4 天前
刀枪不入的红薯  ·  vue中通过postMessage传值,通过window.opener双向通信_window.opener.postmessage_ccc陈陈陈的博客-CSDN博客
2 年前
乐观的青蛙  ·  Debezium同步多个表投递到一个Topic_debezuim多个表写入同一个tpic_不想做咸鱼的王富贵的博客-CSDN博客
2 年前
没有腹肌的开水瓶  ·  用户对问题“如何使用Swift iOS收听iOS”的回答 - 问答 - 腾讯云开发者社区-腾讯云
2 年前
豪情万千的吐司  ·  spring-boot集成mqtt传输协议,以及数据持久化(很详细,附源码)_springboot mqtt_千寻百匿何为因的博客-CSDN博客
2 年前
胡子拉碴的斑马  ·  树形结构!别再用递归实现了,这才是最佳的方案;更快!更强!更好用! - 腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号