zoukankan      html  css  js  c++  java
  • 自定义控件模板,不用依赖属性---------------------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>

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

  • 相关阅读:
    kettle常见问题解决
    kettle 数据库连接中断重置
    笔记本wifi共享给手机 连接连笔记本wifi
    java.sql.SQLException: Io 异常: Connection reset
    ORA-01013:用户请求取消当前的操作
    dubbo 解决Multicast java.net.SocketException: No such device
    linux设置系统日期时间
    dubbo Linux 解决:nc: command not found
    DUBBO本地搭建及小案例
    使用maven编译dubbo,导入eclipse(其他maven开源项目编译类似)
  • 原文地址:https://www.cnblogs.com/xiaoleye/p/4977695.html
Copyright © 2011-2022 走看看