组件用户控件引用样式资源(二)---代码引用

关于样式文件引用方式存在以下弊端(摘自官方)

When you reference a ResourceDictionary in XAML, a ResourceDictionary object is created each time you reference it.  So if you have 10 custom controls in your library and merge the shared ResourceDictionaries for each control by using XAML, you create 10 identical ResourceDictionary objects.  You can avoid this by creating a static class that returns the ResourceDictionary and merging the resources in code.

因此,我们可以通过下面方式规避这个问题

1. 在基础资源类库中创建资源文件夹Resources,在Resources中创建字典资源样式styles.xaml

<LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
        <GradientBrush.GradientStops>
            <GradientStopCollection>
                <GradientStop Color="#Red" Offset="0.0"/>
                <GradientStop Color="#Blue" Offset="1.0"/>
            </GradientStopCollection>
        </GradientBrush.GradientStops>
    </LinearGradientBrush>

2. 在Resources中创建类

public static class SharedDictionaryStyleManager
    {
        static ResourceDictionary _SharedStyleDictionary;
        public static ResourceDictionary SharedStyleDictionary
        {
            get
            {
                if (_SharedStyleDictionary == null)
                {
                    System.Uri resourceLocater = new System.Uri("/MyGlobal.Infrustructure;component/Resources/Styles.xaml", System.UriKind.Relative);
                    _SharedStyleDictionary = (ResourceDictionary)Application.LoadComponent(resourceLocater);
                }
                return _SharedStyleDictionary;
            }
        }
    }

3.创建用户控件UPJAppMenuView.xaml,在构造函数前访问加载样式

public UPJAppMenuView()
        {
            //*************************************引用全局单例样式代码******************************
            this.Resources.MergedDictionaries.Add(SharedDictionaryStyleManager.SharedStyleDictionary);
            InitializeComponent();
        }

4. 用户控件xaml就可引用了

<Border Width="auto" Height="auto" BorderBrush="Blue" BorderThickness="10" CornerRadius="10" >
            <Rectangle Stroke="Black" StrokeThickness="2" Fill="{StaticResource NormalBrush}"></Rectangle>       
            
        </Border>

时间: 2024-10-11 06:35:39

组件用户控件引用样式资源(二)---代码引用的相关文章

【asp.net】用户控件&amp;自定义控件

在原来的学习中,从vb到asp.net我们都接触了很多的控件,这些控件为我们的程序开发提供了很多的便利,在程序开发中,许多功能或代码都需要重复的使用,我们在牛腩的时候学习了模板方法和重复代码添加工具箱调用的方法,提高了效率.在功能方面使用了母版页,在asp.net中又学习了用户控件和自定义控件,开发人员可以自行开发用户控件和自定义控件以提高代码的复用性.下面来简单介绍一下这两种控件. 一.用户控件: 定义: 用户控件是用户自定义的可重用的一种控件,用户控件用.ascx文件表示,它不是编译代码,编

用户控件&amp;自定义控件----.Net再学

开始学习.Net到现在两年了快,开始学习java 也有大半年了,中间做项目,又开始.Net的学习.这次做.Net项目,后台代码敲的不是太多,重点放在了UI上,这也是这篇博客要写的内容有关,做UI就少不了控件的使用.这次做UI 主要是提取公共,抽象控件. 敲代码,就离不开控件,那是第一次.Net学习过之后,对于控件的认识很肤浅,通过这次学习,又弥补了对UI控件的认识.这篇博客要说的是:用户控件和自定义控件.提到这两种控件,想必编程的孩子们都不陌生,但是谈到使用,谈到他们的区别,伙伴们清楚吗? 我们

webfrom用户控件

用户控件与页面的区别:1.扩展名:.ascx .aspx2.内容:页面完整的HTML标记,用户控件没有完整的HTML标记3.声明指示符:页面<%@ Page ...%> 用户控件<%@ Control ...%>4.类的派生:页面派生自Page 用户控件派生自UserControl5.页面可以独立运行,但用户控件不能,它只能放在页面中才能运行. 用户控件的好处:1.代码重用.2.分工开发.3.结构良好. 难点:一.交换信息(一)从外向内操作——在页面中操作用户控件里面的控件1.事先

用户控件的问题引出及解决思路

问题引出 用户控件在不同页面中根据班级分别用来查询"学员信息"和"成绩信息",如何实现不同查询? 问题解决 简单用户控件中所编写的代码响应仅限于此用户控件的内部子控件的事件,外界无法与这些内部代码进行交互,需要给用户控件添加一些公有的属性.方法和事件,从而让用户控件与外界可以更好的相互协作.

用户控件(二)--常见4 种路径问题解决:

二.路径:1.问题: 添加到用户控件中的图片以及超链接 都会有固定的路径,当将用户控件用到其他页面中后,对应的页面路径需要发生变化,否则无法正常作用显示:解决: 在添加到用户控件中的 HTML 标记或者标准控件中添加:runat= server id=“id名”:这样服务端会根据使用情况自动更正图片或者超链接路径:注意: 超链接可以直接使用标准控件:Hyperlink 它里面直接带 runat=server: 2.问题?样式表中值的路径:(例)background-image:url(路径) 解

WPF 动态添加控件以及样式字典的引用(Style introduction)

原文:WPF 动态添加控件以及样式字典的引用(Style introduction) 我们想要达到的结果是,绑定多个Checkbox然后我们还可以获取它是否被选中,其实很简单,我们只要找到那几个关键的对象就可以了. 下面是Ui,其中定义了一个WrapPanel来存放CheckBox,还有两个按钮,用于测试相关功能. <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.c

Android自定义用户控件简单范例(二)

对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应该写成一个类,而这个类的属性是是有自己来决定的. 我们要在res/values目录下建立一个attrs.xml的文件,并在此文件中增加对控件的属性的定义. 使用AttributeSet来完成控件类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来. 在自定义控件类中使

[Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]

 我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 博文摘要:欢迎大家来支持我的<2013-2015 Aaronyang的又一总结,牧童遥指纳尼村>绝对好文章 关于<写给自己的WPF4.5 笔记14,已在官网发布> 1.讲解了自定义控件加入命令支持的两种手段,补充用户控件的客户定义模板 2.实战的方式讲解了无外观控件,可以让使用者定义模板,讲解模板PART,使用可视化状态组,动画的使用 效果演示:

.net用户控件

用户控件用户控件是个什么东西?自定义的反复重用的控件集合 好处?1.代码重用2.结构良好3.分工开发4.局部缓存 难点:一.交换信息: 注意信息的交换只在相邻层之间进行交换,如果是嵌套交换信息除Session外都需要一层一层的写代码交互 (一)从页面向用户控件交换信息.代码写在页面中. 1.用户控件名.FindControl("用户控件中的控件的ID") TextBox textBox1 = WUC1.FindControl("TextBox1") as TextB