WPF 行为的用法(Behavior)

行为的用法有些类似触发器的效果,但是触发器一般只能适用同一种的控件;而一个行为可以用在不同控件下(指定相同的父类);
示例:
注意先要添加引用System.Windows.Interactivity.dll类库(下载链接:https://download.csdn.net/download/qq_43024228/13674433)
先新建一个行为类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Interactivity;
using System.Windows.Media;
using System.Windows.Media.Effects;namespace WpfApp1
{public class EffectBehavior:Behavior<FrameworkElement>{protected override void OnAttached(){base.OnAttached();AssociatedObject.MouseMove += AssociatedObject_MouseMove;AssociatedObject.MouseLeave += AssociatedObject_MouseLeave;}private void AssociatedObject_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e){var element = sender as FrameworkElement;element.Effect = (Effect)new DropShadowEffect() { Color = Colors.Transparent, ShadowDepth = 0 };}private void AssociatedObject_MouseMove(object sender, System.Windows.Input.MouseEventArgs e){var element = sender as FrameworkElement;element.Effect = (Effect)new DropShadowEffect() { Color = Colors.Red, ShadowDepth = 0 };}protected override void OnDetaching(){base.OnDetaching();AssociatedObject.MouseMove -= AssociatedObject_MouseMove;AssociatedObject.MouseLeave -= AssociatedObject_MouseLeave;}}
}

通过AssociatedObject(关联对象:是行为的关联对象,类型为我们指定的FrameworkElement),实现实际行为的触发:鼠标移入,背景高亮效果。

在OnAttached方法中添加鼠标响应事件处理方法。

在OnDetaching方法中移除鼠标响应事件处理方法。

窗体xaml代码:

<Window x:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp1"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid><StackPanel><TextBox Width="100" Height="30" Margin="40"><i:Interaction.Behaviors><local:EffectBehavior/></i:Interaction.Behaviors></TextBox><Button Width="100" Height="30" Margin="40"><i:Interaction.Behaviors><local:EffectBehavior/></i:Interaction.Behaviors></Button></StackPanel></Grid>
</Window>

效果:
鼠标移入控件中会出现红色高亮阴影。

WPF 行为的用法(Behavior)相关推荐

  1. Margin 在WPF中的用法

    Margin 在WPF中的用法 Stevenzhu18 Margin是用来表示控件4条边到所在控件的距离,格式如:Margin="1,2,3,4",1代表到left值,2代表到to ...

  2. WPF Visibility的用法

    Visible 元素在窗体中正常显示 Collaspsed 元素不显示,也不占用空间 Hidden 元素不显示,但是任然为它保留空间

  3. WPF常用TriggerAction用法 (一)

    Microsoft.Expression.Interactivity 常用TriggerAction-> CallMethodAction ChangePropertyAction Contro ...

  4. WPF中INotifyPropertyChanged用法

    1.先建立类,在类中输入propfull,双击Tab按键 2.在头部引入 using System.ComponentModel; 3.建立BindingBase类,输入:后,选择继承INotifyP ...

  5. 从0 开始 WPF MVVM 企业级框架实现与说明 ---- 第五讲 WPF中 Style

    Style这个东西几乎是无处不在,这个类似于web开发中的css样式,想要做一个很丰富的UI,这个东西是必不可少的,我也不是专业的UI开发者,这边只能介绍Style在WPF中的用法 下面有一个下载地址 ...

  6. WPF之DataGrid控件使用

    WPF之DataGrid控件使用 一.DataGrid简介 二.DataGrid数据源绑定 三.DataGrid单元格编辑触发事件 四.DataGrid增加删除行 五.DataGrid数据触发器 参考 ...

  7. NAT会话穿越应用程序(STUN)(RFC-5389)

    RFC文档链接 摘要 NAT会话穿越应用程序 (STUN) 是一种协议,在处理网络地址转换(Network Address Translator, NAT)穿越时充当其他协议的工具.终端可以使用它来确 ...

  8. 2020C#程序设计及应用教程复习总结

    2020C#程序设计及应用教程复习总结 目录 第一章 第二章 第3-4章 第5-6章 第七章 第八章 第九章 第十二章 第一章 C#代码编程基础 1.基本概念 (1)Microsoft.NET框架包括 ...

  9. WPF中StringFormat的用法

    原文:WPF中StringFormat的用法 WPF中StringFormat的用法可以参照C#中string.Format的用法 1. C#中用法: 格式化货币(跟系统的环境有关,中文系统默认格式化 ...

最新文章

  1. iOS开发之圆角指定
  2. Android中后台定时任务实现,即时数据同步问题思考!
  3. vc 6.0常见编译错误及改正方法
  4. 禁止java更新_禁止:禁止对'replicas','template'和'updateStrategy'以外的字段的statefulset规范进行更新...
  5. bootstrap全局css样式
  6. C# 跨程序集调用常量、变量和函数
  7. R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示
  8. 开发第一个Meeting App
  9. fate服务器维护,活动维护公告(2020年4月1日 14时)
  10. 21OGNL与ValueStack(VS)-静态方法访问
  11. python去重复字符串_python3取出重复3次的字符串保存为3列
  12. 设计模式笔记(10)---装饰模式(结构型)
  13. 《算法图解》——广度优先探索与队列
  14. ROST情感分析的语法规则_大数据之数据仓库Hive架构分析
  15. CsharpVB教程下载
  16. 计算机网络 MOOC 哈尔滨工程大学 pdf课件
  17. java 英文整数数字转成阿拉伯数字 正负百万亿以内
  18. 《郭论》郭德纲/著 读后得2021-02-22
  19. 直播预告:SIGDIAL2020最佳论文一作高信龙一评测任务导向型对话系统|AI TIME PHD对话系统专题-1...
  20. 25岁就死了,75才埋,程序员们的中年危机:有点懵

热门文章

  1. 腾讯云轻量数据库LighthouseDB使用心得
  2. cocos creator SDK IOS
  3. 兴趣爱好-天空之城简谱
  4. 不同类型光学透镜的比较
  5. 简单的抽卡模拟器1.0
  6. Linux下的动态监控进程
  7. 算法竞赛入门 第三章习题
  8. avada主题符合SEO搜索吗
  9. 单片机全局有必要封装_从业将近十年!手把手教你单片机程序框架(连载)
  10. CP2102N高度集成USB全速带电池充电检测控制芯片