自定义控件模板,不用依赖属性---------------------WPF

我觉得用依赖属性的方法来写个控件模板,看起来太乱,不好看。。所以,在网上无意中找到了一个给资源文件定义一个类的方法

1.资源文件中

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    x:Class="WpfApplication1.Class1"
                    >
               <!--注意这个x:Class-->
    <ControlTemplate x:Key="Mbutton2" TargetType="Button">
        <Border Height="30" Width="50" Margin="10,0,0,0" >
            <Button x:Name="woshini" x:Uid="woshini"  Content="nihao"  Click="nihaos"></Button>
        </Border>
    </ControlTemplate>
</ResourceDictionary>

2.后台类

namespace WpfApplication1
{
    //这里必须是有partial
    partial class Class1 : ResourceDictionary
    {

      private static void NormalBrushChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
      {
          Button ditem = d as Button;
          ditem.OnApplyTemplate();
      }
        public Class1()
        {
            InitializeComponent();

            int i = 0;
        }
        public void nihaos(object sender, RoutedEventArgs e)
        {            //省去处理,如果显示,表明调用成功。
            MessageBox.Show("你成功了!");
            Button bt = sender as Button;

        }
    }
}

3.页面调用

  <Window.Resources>
        <!--还是得引用-->
        <ResourceDictionary >
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/WpfApplication1;component/Dictionary1.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

    </Window.Resources>
    <Grid>
        <Button Template="{StaticResource Mbutton2}"></Button>
    </Grid>

这样就可以完成了。但是有个比较麻烦的问题,,我想获取模板中某个控件的实例对象的时候不能主动的去获取。。。只能等那个对象触发某个事件的时候我才能记下这个控件,和控件的对象

时间: 2024-10-06 04:58:04

自定义控件模板,不用依赖属性---------------------WPF的相关文章

背水一战 Windows 10 (78) - 自定义控件: 基础知识, 依赖属性, 附加属性

原文:背水一战 Windows 10 (78) - 自定义控件: 基础知识, 依赖属性, 附加属性 [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(自定义控件) 自定义控件的基础知识,依赖属性和附加属性 示例演示自定义控件的基础知识,依赖属性和附加属性1.自定义控件的示例/MyControls/themes/generic.xaml <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/

WPF利用依赖属性和命令编写自定义控件

以实例讲解(大部分讲解在代码中) 1,新建一个WPF项目,添加一个用户控件之后在用户控件里面添加几个控件用作测试, <UserControl x:Class="SelfControlDenpendy.SelfControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006

WPF系列 —— 控件添加依赖属性

依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 和 用途:依赖属性是对传统.net 属性的一种封装,使一个传统.net属性支持 WPF 中的 数据绑定.动画.样式 等功能. 新建:任意代码代码文件中 ,输入 propdp 再双击tab键.生成如下的代码块. MyProperty: 依赖属性的名称: ownerclass: 当前依赖属性绑定的所有类; new PropertyMeta

WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)

一. 摘要 首先圣殿骑士非常高兴这个系列能得到大家的关注和支持.这个系列从七月份開始到如今才第七篇,上一篇公布是在8月2日,掐指一算有二十多天没有继续更新了,最主要原因一来是想把它写好,二来是由于近期几个月在筹备"云计算之旅"系列,所以一再推迟了公布进度. 之前一直都没有想过要录制视频.基本的原因还是怕自己知识有限,从而误导他人,所曾经几次浪曦和51CTO邀请录制视频,我都以工作忙.公司内部培训须要时间和自己有待提高等理由委婉的拒绝了,说实在的.自己也知道自己还有非常多地方有待提高.还

WPF入门教程系列十一——依赖属性(一)

一.依赖属性基本介绍 本篇开始学习WPF的另一个重要内容依赖属性. 大家都知道WPF带来了很多新的特性,其中一个就是引入了一种新的属性机制--依赖属性.依赖属性出现的目的是用来实现WPF中的样式.自动绑定及实现动画等特性.依赖属性的出现是WPF这种特殊的呈现原理派生出来的,与.NET普通属性不同的是,依赖属性的值是依靠多个提供程序来判断的,并且其具有内建的传递变更通知的能力. 依赖属性基本应用在了WPF的所有需要设置属性的元素.依赖属性根据多个提供对象来决定它的值 (可以是动画.父类元素.绑定.

WPF: 只读依赖属性的介绍与实践

在设计与开发 WPF 自定义控件时,我们常常为会控件添加一些依赖属性以便于绑定或动画等.事实上,除了能够添加正常的依赖属性外,我们还可以为控件添加只读依赖属性(以下统称"只读属性"),以增加控件的灵活性. 这听起来有些矛盾.只读依赖属性,只能读不能写,却又怎么能提高控件的灵活性呢?想想我们常用的 IsMouseOver 等属性就可以理解,它们都是只读属性,但如果没有它们,想要控制样式将会很困难. 所以,总结来说,只读属性的特点是:无法赋值,不能绑定,不能用于动画,不能验证等:而之所以使

WPF 依赖属性

依赖属性,简单的说,在WPF控件应用过程中,界面上直接可以引用的属性 如:<Button Content="aaa"></Button> Content称为Button的依赖属性 当我们自定义控件时,如何添加依赖属性呢 1.添加属性 /// <summary> /// get or set the items /// </summary> public List<TitleListItemModel> TitleListIte

WPF ----在UserControl的xaml里绑定依赖属性

场景:在定义wpf 用户控件的时候,希望使用时设置自定义的属性来改变用户控件里的状态或内容等. 下面直接上实例代码: 用户控件的后台代码,定义依赖属性 public partial class MyUserControl : UserControl { public MyUserControl() { InitializeComponent(); } public string MyProperty { get { return (string)GetValue(MyPropertyProper

WPF入门教程系列十四——依赖属性(四)

六.依赖属性回调.验证及强制值 我们通过下面的这幅图,简单介绍一下WPF属性系统对依赖属性操作的基本步骤: 借用一个常见的图例,介绍一下WPF属性系统对依赖属性操作的基本步骤: 第一步,确定Base Value,对同一个属性的赋值可能发生在很多地方.比如控件的背景(Background),可能在Style或者控件的构造函数中都对它进行了赋值,这个Base Value就要确定这些值中优先级最高的值,把它作为Base Value. 第二步,估值.如果依赖属性值是计算表达式(Expression),比