C#--WPF自定义控件模板示例

1.UI代码

    <Button Background="Black"  BorderBrush="Transparent" Padding="0" HorizontalContentAlignment="Left" Style="{StaticResource ButtonEmpty}"
            Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:Valve1h}}, Path=ValueCmd}"
            CommandParameter="{Binding  ElementName=ID,Path=Text }" Cursor="Hand" IsHitTestVisible="True"/>

注释:属性绑定释义

Command--Ancestor 查找绑定至自定义控件Valve1h,实体命令绑定本地自建依赖属性ValueCmd

CommandParameter--绑定本地TextBlock控件Name为ID,Path为其文本值

2.cs代码

2.1 string依赖属性及属性值变化回调函数
        public static readonly DependencyProperty ValueLabelProperty =
        DependencyProperty.Register("ValueLabel", typeof(string),
        typeof(Valve1h), new PropertyMetadata("00", new                             
        PropertyChangedCallback(OnLabelChanged)));//CHANGED
        public string ValueLabel
        {
            get { return (string)GetValue(ValueLabelProperty); }
            set { SetValue(ValueLabelProperty, value); }
        }
        static void OnLabelChanged(object sender, DependencyPropertyChangedEventArgs args)
        {
            Valve1h source = (Valve1h)sender;//CHANGED
            source.ID.Text = (string)args.NewValue;//CHANGED
        }
2.2 Bool依赖属性及属性值变化回调函数
        public static readonly DependencyProperty ValueBitProperty =
        DependencyProperty.Register("ValueBit", typeof(bool),
        typeof(Valve1h), new PropertyMetadata(false, new PropertyChangedCallback(OnBitChanged)));//CHANGED--属性变化回调函数
        public bool ValueBit
        {
            get { return (bool)GetValue(ValueBitProperty); }
            set { SetValue(ValueBitProperty, value); }
        }
        static void OnBitChanged(object sender, DependencyPropertyChangedEventArgs args)
        {
            Valve1h source = (Valve1h)sender;//CHANGED
            if ((bool)args.NewValue)
                source.ValveShape.Fill = Brushes.GreenYellow;
            else
                source.ValveShape.Fill = Brushes.SteelBlue;            //CHANGED
        }
2.3 Command依赖属性
        public static readonly DependencyProperty ValueCmdProperty =
        DependencyProperty.Register("ValueCmd", typeof(ICommand),
        typeof(Valve1h), new FrameworkPropertyMetadata() { BindsTwoWayByDefault = true });//CHANGED
        public ICommand ValueCmd
        {
            get { return (ICommand)GetValue(ValueCmdProperty); }
            set { SetValue(ValueCmdProperty, value); }
        }

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值