相关文章推荐
爱搭讪的蚂蚁  ·  WPF 和 Windows Forms ...·  3 月前    · 
玉树临风的斑马  ·  C#WPF异常报错配置系统未能初始化缺少根元 ...·  3 周前    · 
沉稳的围巾  ·  博客导航 - lindexi ·  3 周前    · 
严肃的荒野  ·  WPF MVVM自定义排序问题开发者社区·  2 周前    · 
开心的机器人  ·  致新深化首页-施工图深化设计公司·  7 月前    · 
大鼻子的大熊猫  ·  微软应用商店的下载路径和安装路径在哪呢? ...·  8 月前    · 
神勇威武的滑板  ·  使用 Microsoft Entra ID ...·  1 年前    · 
含蓄的米饭  ·  《孝庄秘史》20年,八大美女现状不同,有人咖 ...·  1 年前    · 
性感的小虾米  ·  openwrt恢复出厂 - CSDN文库·  1 年前    · 
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 和 Windows Forms 互操作 | Microsoft Learn
3 月前
玉树临风的斑马  ·  C#WPF异常报错配置系统未能初始化缺少根元素_微软技术-CSDN问答
3 周前
沉稳的围巾  ·  博客导航 - lindexi
3 周前
严肃的荒野  ·  WPF MVVM自定义排序问题开发者社区
2 周前
开心的机器人  ·  致新深化首页-施工图深化设计公司
7 月前
大鼻子的大熊猫  ·  微软应用商店的下载路径和安装路径在哪呢? - Microsoft Q&A
8 月前
神勇威武的滑板  ·  使用 Microsoft Entra ID 保护 Java Spring Boot 应用 - Azure | Microsoft Learn
1 年前
含蓄的米饭  ·  《孝庄秘史》20年,八大美女现状不同,有人咖位涨,有人被淡忘|尤小刚|胡静|杨紫|邬倩倩|何赛飞_网易订阅
1 年前
性感的小虾米  ·  openwrt恢复出厂 - CSDN文库
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号