首页 > 其他分享 >wpf 外部样式实现方式

wpf 外部样式实现方式

时间:2024-09-02 19:36:10浏览次数:5  
标签:xmlns http 样式 xaml 外部 2006 wpf com schemas

最近开发一个产品,打算把每个功能模块单独写一个DLL,来实现复用。那么问题 来了,每个DLL 样式都是类似的,每个DLL里面都搞样式,不利于后期的调整。所以呢把样式单独的放到一个DLL中。

实现大致如下:

1、新建自定义控件库 StyleLibrary 放样式Styles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Button" x:Key="CustomButtonStyle">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="DarkGreen"/>
</Style>
<Style TargetType="UserControl" x:Key="FormStyle1" >
<Setter Property="Background" Value="Red" />
</Style>
</ResourceDictionary>

2、新建用户控件库 ControlLibrary 放窗体MyControl.xaml ,这里就相当于 系统的一个模块了

<!-- MyControl.xaml -->
<UserControl x:Class="ControlLibrary.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="clr-namespace:ControlLibrary" Height="200" Width="300">
<UserControl.Resources>
<!--在上面设置 没有效果-->
<!--Background="Red"-->
<!-- Style="{StaticResource FormStyle1}"-->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<!--控件内部设置没有问题-->
<Button Width="100" Style="{StaticResource CustomButtonStyle}" Content="Click Me"/>
</Grid>
</UserControl>

3、新建wpf应用MainApp ,MainWindow修改如下

<!-- MainWindow.xaml -->
<Window x:Class="MainApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ControlLibrary;assembly=ControlLibrary"
Title="MainWindow" Height="300" Width="500">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StyleLibrary;component/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid>
<!--这里设置是有效果的-->
<local:MyControl Style="{StaticResource FormStyle1}"/>
</Grid>
</Window>

 

以上 我们发现对控件内部的样式 是可以控制的,外部是无法控制的,需要在主程序中设置,注意避坑。

标签:xmlns,http,样式,xaml,外部,2006,wpf,com,schemas
From: https://www.cnblogs.com/530263009QQ/p/18393375

相关文章

  • WPF communicate across different modules via event
    //Runtimeproject,cclasslibraryusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Linq.Expressions;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Input;namespaceRuntime{publicclassDelCmd:......
  • CSS 样式化表格——WEB开发系列24
    表格在网页设计中扮演了重要角色,尤其是在展示数据和信息时。尽管HTML表格提供了结构化的数据展示,但要使其看起来既美观又实用,CSS样式化至关重要。一、典型的HTML表格在了解如何样式化表格之前,我们首先来看看一个典型的HTML表格结构。一个基本的HTML表格由 <table>、<thea......
  • 工作五年小结 | 面对不确定性快速上升的外部环境,我们该如何寻求突破?
    1.前言工作五年了,来京东马上满一年,前四年在开水团,不禁感叹时间过的真快啊!回想19年从西安交大硕士毕业孤身前往北京开始职业生涯,经历了孤独迷茫到自立坚定,再到23年下定决心携妻还蜀安家,并来到京东开始新的征程,这5年过的很快也很充实。今年也是我的而立之年,感觉一迈过这个坎,眼......
  • WPF access mysql and pass data from datagrid to mysql
    //sqldropdatabaseifexistsmydb;createdatabasemydb;usemydb;droptableifexistsmt;createtablemt(idintauto_incrementprimarykey,namevarchar(50)notnulldefault'',isbnvarchar(50)notnulldefault'',authorvarchar......
  • WPF—LiveCharts图表
    LiveCharts图表LiveCharts是一个简单灵活、交互式以及功能强大的跨平台图表库,支持wpf、winform...应用程序。快速入门安装在应用程序中右键`引用`​,点击`管理NuGet程序包`​,选择`浏览`​,搜索`LiveChartsCore.SkiaSharpView.WPF`​,注意必须勾选`包括预发行版`​选项,否则搜索......
  • WPF Material Design中资源的查找和使用
    MaterialDesign中,一共分为两大块。一个是颜色资源,一个是控件资源。下面来说下,如何使用控件资源:在VS中,通过Nuget添加完MaterialDesign后,还需要在App.xaml中引用这些资源,引用的方法如下图所示:在1处,引入materialdesign的引用。在2处,可以修改项目的主题色,这个比较重要。以前......
  • WPF中如何根据数据类型使用不同的数据模板
    我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。例如将一个文件夹集合绑定到ListBox时,系统文件夹和普通文件夹分别显示为不同的效果,就可以使用模板选择器功能。WPF提供了一个模板选择器类型DataTemplateSelector,它可以根据数据对象和数据......
  • Android开发 - ClassLoader 加载外部类解析
    ClassLoader是什么ClassLoader主要作用是将字节码文件(.class文件)加载到Java虚拟机(JVM)中,以便应用程序可以使用这些类ClassLoader的好处模块化加载:应用程序可能由多个模块组成,而这些模块可能需要按需加载插件机制:很多应用支持插件化,插件在安装或更新后需要动态加载......
  • .NET|--WPF|--笔记合集|--依赖项属性|--2.注册依赖项属性
    前言使用一个实例,其实分2步骤定义,实例化.但是依赖项属性为不能直接实例化,因为DependencyProperty类没有公开的构造函数,只能使用静态的DependencyProperty.Register方法创建DependencyProperty实例.DependencyProperty.Register源码//System.Windows.DependencyP......
  • .NET|--WPF|--笔记合集|--依赖项属性|--1.定义依赖项属性
    前言一般情况下,我们是不用定义依赖项属性的,更多的是直接使用即可.那么何时需要我们定义依赖项属性呢?1.设计自定义的WPF元素;2.为原本不支持数据绑定,动画等WPF功能的代码中,需要添加数据绑定,动画等WPF功能时.定义依赖项属性一般的类型来说,如果想要使用的......