WPF ResourceDictionary 主题资源替换】的更多相关文章

原文:WPF ResourceDictionary 主题资源替换 当我们需要在程序中替换主题,更换另一套背景.颜色.样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Key 2. 资源替换 添加俩套样式,Xaml下是否可以将原有的资源(如样式)替换成新的资源? 加载顺序是否会冲突,比如俩个字典中都存有Image.Search图片资源,最终会以哪个字典中的资源为准呢 ResourceDictionary的合并方…
当我们需要在程序中替换主题,更换另一套背景.颜色.样式时,如何在不修改资源Key值,直接替换呢? 问题&疑问 1. Key值冲突 同一ResourceDictionary中,不可以使用相同Key 2. 资源替换 添加俩套样式,Xaml下是否可以将原有的资源(如样式)替换成新的资源? 加载顺序是否会冲突,比如俩个字典中都存有Image.Search图片资源,最终会以哪个字典中的资源为准呢 ResourceDictionary的合并方案 WPF的ResourceDictionary合并时,合并的规则…
之前的ResourceDictionary主题资源替换(一)通过加载顺序来覆盖之前的主题资源,介绍了WPF框架对ResourceDictionary资源的合并规则. 此篇介绍一种在编译期间,实现资源替换的方案 前言 如下图,项目中存在俩个主题资源字典,我们想通过配置一键修改项目的主题. 首先,我们默认使用的是灰色主题 添加项目属性文件 新建文件Themes.props(主题设置), 并添加当前主题版本: <Project> <PropertyGroup> <Theme>…
作用:一个应用程序中,某个窗口需要使用样式,但是样式非常多,写在一个窗口中代码分类不方便.最好Style写在专门的xaml文件中,然后引用到窗口中,就像HTML引用外部css文件一样. 初衷:就在于可以实现多个项目之间的共享资源,资源字典只是一个简单的XAML文档,该文档除了存储希望使用的资源之外,不做任何其它的事情. 1.  创建资源字典 创建资源字典的过程比较简单,只是将需要使用的资源全都包含在一个xaml文件之中即可.如下面的例子(文件名test.xaml,与后面的app.xaml文件中的…
使用C#代码来获取XAML资源,除去正常的FindResource.而且是能查询到资源的对象. 说实话还是很麻烦的. 比如说我现在有一堆静态资源放在xaml的资源中,我想通过绑定的方式来获取. 好比是Path的Data数据 ,我放在Xaml资源中. 我将path作为listbox的ItemTemplate的内容填充,然后将xaml资源中对应的Path的Data的名称作为集合绑定到Listbox. 必然我是需要编写一个转换器的. 这个过程,最重要的是转换器中如何获取静态资源. 代码如下: publ…
Prism 5.0 includes guidance in several new areas, resulting in new code in the Prism Library for WPF, new and updated QuickStarts, and updated documentation. Parts of the Prism Library changed between Prism 4.1 and Prism 5.0 to support the new guidan…
本文参考Prism官方示例 创建Prism项目 将App.xaml中的WPF标准Application替换为PrismApplication,移除StartupUri属性: 将App.xaml.cs中的基类改为PrismApplication: 必须实现PrismApplication中的两个抽象方法:RegisterTypes.CreateShell: RegisterTypes用来注册类型: CreateShell用来创建程序主窗口. Region使用 在view xaml文件中使用pris…
Prism 5.0 包含很多新东西,新的快速入门示例,新的范例,更新的文档,Prism类库代码的改变.用来解决已有问题,回应社区所提的需求.(这句话跟 What's New in Prism Library 4.0中的第一句话一模一样,就不能来的新鲜的吗?) 注意:在Silverlight中还得用Prism 4.1. 新指南 Prism5.0包含以下新指南: Prism.Mvvm是一个跨平台的类库,它封装了Prism对MVVM模式的支持.类库中包含ViewModelLocationProvide…
“Logical resources may be of various types, such as brushes, geometries, styles, and templates.Placing all those resources in a single file such as App.xaml hinders maintainability. A betterapproach would be to separate resources of different types (…
原文:总结:WPF中ResourceDictionary资源文件的查找和遍历方法 一.查找包含制定关键字的资源 ResourceDictionary GetThemeDictionary()         {             return (from dict in Application.Current.Resources.MergedDictionaries                     where dict.Contains("S_AccentBrush")…
RichTextBox 只是一个控件,表示对 FlowDocument 对象执行操作的丰富编辑控件.它所承载的内容由其 Document 属性来呈现. Document 是一个 FlowDocument 类型. RichTextBox控件允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征. RichTextBox控件提供了数个有用的特征,你可以在控件中安排文本的格式.要改变文本的格式,必须先选中该文本.只有选中的文本才可以编排字符和段落的格式.有了这些属性,就可以设置文…
当资源文件里改变了控件的样式时,在使用的地方如果想改变资源文件里修改的内容,会造成无法达到预期目的的结果. 以DataGrid为例,我在资源文件里,改变了默认的DataGrid的样式,其中我设置了IsReadOnly为True.在使用时,这将导致DataGrid的列不能编辑:可实际情况要求编辑功能,我们就会想到针对列设置IsReadOnly为false. 如代码里的注释掉的内容所示,在简单地引用资源文件,而不做处理时,是无法达到预期的. 正确的做法是: 引入通过引入新的Style,在Style的…
在文件夹或者项目右键-> Add(添加),会弹出可以快捷添加的资源,但是你会发现没有 ResourceDictionary资源可以选择. 解决此问题方法: 第一步:工程->右键->Unload Project 第二步:刚刚Unload的这个工程->右键->Edit XXXX : 第三步:PropertyGroup中添加    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301…
WPF实现主题更换的简单DEMO 实现主题更换功能主要是三个知识点: 动态资源 ( DynamicResource ) INotifyPropertyChanged 接口 界面元素与数据模型的绑定 (MVVM中的ViewModel) Demo 代码地址:GITHUB 下面开门见山,直奔主题 一.准备主题资源 在项目 (怎么建项目就不说了,百度上多得是) 下面新建一个文件夹 Themes,主题资源都放在这里面,这里我就简单实现了两个主题 Light /Dark,主题只包含背景颜色一个属性. 1.…
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了大量的复杂属性的设置. 在WPF中,设置外观样式我们有很多种方式,比如通过设置控件的属性来控制控件的外观样式:或者通过在每一个控件中分别设置Style:或者通过在整个Window.Resource中设置Style,又或者在App.xaml的Application.Resource设置Style. 在…
本文主要针对WPF新手,高手可以直接忽略,更希望高手们能给出一些更好的实现思路. 前期一个小任务需要实现一个类似含步骤进度条的控件.虽然对于XAML的了解还不是足够深入,还是摸索着做了一个.这篇文章介绍下实现这个控件的步骤,最后会放出代码.还请高手们给出更好的思路.同时也希望这里的思路能给同道中人一些帮助.话不多说,开始正题. 实现中的一些代码采用了网上现有的方案,代码中通过注释标记了来源,再次对代码作者一并表示感谢. 首先放一张最终效果图. 节点可以被点击 控件会根据绑定的集合数据生成一系列节…
一如既往没废话! wpf桌面应用开发都是window内引入很多个UserControl. 如果你有通过不同颜色来换肤的需求,那么下面我就将整个过程! 分2个步骤: 1.主窗体背景色替换: 2.同时界面内部部分控件(如:Button)也同步换色: 那么下面开始编码: window窗体背景色切换: 如图,是一个Button群,每个按钮都代表一个颜色 对应的代码: <Button Grid.Row="0" Grid.Column="0" Width="20…
这篇将介绍使用DynamicResource实现动态的界面切换功能.熟悉WPF的园友应该已经猜到了实现方式,简而言之就是动态替换DataTemplate,ControlTemplate,Style等等UI相关的属性. 那么使用DynamicResource能让UI动态到什么程度呢?可以说,心有多大,就可以做多大,只要你想得到,就可以做出来. 下面以展示层次数据结构为例,实现了运行时切换数据显示界面结构的功能.先来看一下要显示的数据,是一个XML文件. <earth> <country n…
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 皮肤 皮肤是应用程序中样式与模板的集合,可以被整体动态的替换,从而让应用看上去是一种全新的风格.通过皮肤允许第三方任意改变应用程序的外观,WPF并没有内建一个叫皮肤的机制.皮肤及换肤功能可以通过动态资源机制加Style和模板来实现. 下面介绍一个WPF较常见的皮肤定制机制.如果我们希望一个元素的外观可以通过皮肤来定制,我们要将此元素的样式定义为引用动态…
题外话 打开博客园,查看首页左栏的”推荐博客”,排名前五的博客分别是(此处非广告):Artech.小坦克.圣殿骑士.腾飞(Jesse).数据之巅.再看看它们博客的最新更新时间:Artech(2014-08-07) .小坦克(2012-02-13).圣殿骑士(2015-06-30).腾飞(Jesse)(2013-12-18) .数据之巅(2016-02-19) .虽然数据之巅在最近发表了一篇博客,但是再看看倒数第二篇,更新时间是2015-11-18.从数据的现象看感觉现在技术大牛们博客更新的越来越…
命名空间: xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:UserNamespace" WPF布局 1.Cavas画布:设置坐标值来布局,分别为Top, Left, Bottom., Right 如:Canvas.SetTop(控件名, 数值); 2.DockPanel面版:为其子控件提供相对的停靠位置, 包括向左停靠(Dock.Left),向右停靠(Doc…
WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhishi-houtai-shezhi-style.html Style myStyle = (Style)this.FindResource("TabItemStyle");//TabItemStyle 这个样式是引用的资源文件中的样式名称 静态资源在第一次编译后即确定其对象或值,之后不能对…
什么是XAML XAML(Extensible Application Markup Lanaguage的简写,发音“zammel”)是用于实例化.NET对象的标记语言.尽管XAML是一种可以用于诸多不同问题领域的技术,但其主要作用是构造WPF用户界面.换言之,XAML文档定义了在WPF应用程序中组成窗口的面板.按钮以及各种控件的布局. WPF之前的图形用户设计界面存在的问题 1. 每个图形元素(背景和按钮等)需要导出为单独的位图.这限制了组合位图的能力和使用动态效果的能力,如反锯齿.透明和阴影…
视频二:XAML基础 1.顶级元素 <Window></Window>,<Page></Page>,<Application></Application> 2. 名称空间 很重要. 默认名称空间:xmlns="" :   另外名称空间:  xmlns:x=""   : x是名称空间前缀 x:Class="WpfApplication1.MainWindow" 是继续自Wind…
WPF资源的优点 WPF资源系统是一种保管一系列有用对象的简单方法,从而可以更容易地重用这些对象,它主要有以下优点: 高效,通过资源可以定义一个对象,并在标记中的多个地方重用,这会使代码变的更加精简,并且更加高效. 可维护性,通过资源可以使用低级的格式化细节,并将它们移到方便对其进行修改的中央位置.在XAML中创建资源,相当于在代码中创建常量. 适应性,一旦特定的信息和应用程序的其它部分相分离,并且放置到资源部分中,就可以动态地修改它. 资源集合 每个元素都是有一个Resources属性(它是在…
在WPF中要想使用Metro风格是很简单的,可以自己画嘛.. 但是为了节省时间,哈,今天给大家推荐一款国外Metro风格的控件库. 本文只起到抛砖引玉的作用,有兴趣还是推荐大家上官网,Thanks,官网地址 我会在底部发出. 使用步骤 一.使用Nuget包管理,添加引用 Install-Package MahApps.Metro 或者使用界面管理: 二.修改App.xaml文件,引用资源 <Application x:Class="MetroWPF.App" xmlns=&quo…
WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序. 使用 WPF,您可以创建广泛的独立应用程序以及浏览器承载的应用程序.示例包括下图中显示的 Contoso Healthcare Sample Application(Contoso Heal…
原文:<Programming WPF>翻译 第6章 1.创建和使用资源 资源这个词具有非常广泛的意义.任何对象都可以是一个资源.一个在用户界面中经常使用的Brush或者Color可以是一个资源.一段文本或者一个图形也可以是一个资源.没有什么特殊的对象不可以成为一个资源.资源的底层处理机制确保了获取你所需要的资源成为可能,而不闭关心这个资源是什么:同时,这套机制可以简单的识别和定位对象. 资源管理的核心是ResourceDictionary这个类.这是一个相当简单的集合类,就像一个普通的Has…
Font Awesome 在网站开发中,经常用到.今天介绍如何在WPF应用程序中使用Font Awesome . 如果是自定义的图标字体,使用方法相同. 下载图标字体 在官方网站或github上下载资源 http://fontawesome.io/#modal-download https://github.com/FortAwesome/Font-Awesome 解压下载的文件(我是在github上下载的源码),我们要使用的是其中css和fonts文件夹中的内容 在项目中加入字体 新建WPF应…
参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows Presentation Foundation (WPF) 中,使用统一资源标识符 (URI) 标识和加载文件的方式有很多,包括: 指定当应用程序第一次启动时显示的用户界面 (UI). 加载图像. 导航到页 加载不可执行的数据文件. 此外,可以使用 URI 标识和加载位于各种位置的文件,这些位置包括…