相关文章推荐
悲伤的拖把  ·  一款软件无法正常打开,疑似WPF工作异常,是 ...·  3 月前    · 
高大的高山  ·  【wpf】ListView 和 ...·  3 月前    · 
气宇轩昂的春卷  ·  WPF ListView关闭选择开发者社区·  3 月前    · 
爱搭讪的蚂蚁  ·  WPF 和 Windows Forms ...·  1 月前    · 
发呆的爆米花  ·  云数据库 SQL Server_正版SQL ...·  1 年前    · 
想出国的羽毛球  ·  python使用协程并发 - 雪山飞猪 - 博客园·  2 年前    · 
酒量大的爆米花  ·  关于Unity3D第一视角下镜头穿墙的问题解 ...·  2 年前    · 
玩足球的登山鞋  ·  9 ...·  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
3 月前
高大的高山  ·  【wpf】ListView 和 ItemsControl 的一点区别 - 宋桓公
3 月前
气宇轩昂的春卷  ·  WPF ListView关闭选择开发者社区
3 月前
爱搭讪的蚂蚁  ·  WPF 和 Windows Forms 互操作 | Microsoft Learn
1 月前
发呆的爆米花  ·  云数据库 SQL Server_正版SQL Server_商用mssql数据库_腾讯云
1 年前
想出国的羽毛球  ·  python使用协程并发 - 雪山飞猪 - 博客园
2 年前
酒量大的爆米花  ·  关于Unity3D第一视角下镜头穿墙的问题解决方法_weixin_30834783的博客-CSDN博客
2 年前
玩足球的登山鞋  ·  9 mysql根据逗号将一行数据拆分成多行数据 - 滔滔逐浪 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号