WPF如何使用触发器

触发器

一、属性触发器

1.WPF如何实现下面的功能

WPF如何使用触发器_第1张图片

2.下面就是利用属性触发器实现(如果不懂可以看看《WPF高级编程》这本书)

 
    
3.如果针对一个这种情况你可能会使用MouseEnterMouseLeave两个事件,但是如果这种情况多的话,差不多相同的重复写,还有你可以多个Label共同作用这两个事件,这样也确实变的简单了,但是你利用属性触发器代码变得就会变得更清晰和更优美

//利用这两个事件实现上图简单的功能
        private void label1_MouseEnter(object sender, MouseEventArgs e)
        {
            label1.Foreground = Brushes.Blue;
            //将鼠标指针变成手的形状
            label1.Cursor = Cursors.Hand;
        }

        private void label1_MouseLeave(object sender, MouseEventArgs e)
        {
            label1.Foreground = Brushes.Black;

        }

二、多触发器


1.我现在做一个简单的关键字变色(只是为了演示多触发器),本来是应该需要正则表达式来完成

WPF如何使用触发器_第2张图片

对于这种功能的实现你完全可以使用一个事件来写,但是今天只是想说说触发器如何使用


    
        
    

2.这个是comboBox的代码和绑定,这个很简单

  
            PHP
            WPF
            Python
        
三.数据触发器

1.这个我要说的是,如何后台类的一个属性绑定到前台,来触发属性

目的是:现在我点击按钮更改类中的一个属性值 ,而这个属性值(Text="Hello World")刚好触发了数据触发器,触发后更改label的字体颜体



        
    
2.控件资源绑定


        

3.下来就是后台的代码实现,并且还有一个重要 细节

如何想实现,还要对label的一个的DataContext赋值,而这个值必须是该属性的所在类的实例(我这是是this)

 private void btnPrint_Click(object sender, RoutedEventArgs e)
        {
            //如何单击按钮.给属性赋值,这个就会触发前台的数据触发器
            Text = "Hello World";
            lbl.DataContext = this;
        }
        string _text;
        //前台绑定该属性
        public string Text
        {
            get { return _text; }
            set { _text = value; }
        }


你可能感兴趣的:(C#,WPF)