2021年2月1日星期一

【WPF学习笔记】WPF中行为(Behavior)的简单使用

WPF中行为(Behavior)的简单使用

在我之前的 WPF 开发中,需要实现一些页面效果时,常使用到的方式就是重写元素的样式(Style),然后再样式里面设置使用元素的各类触发器(Trigger)来实现效果。这样常常需要编写大量的代码。

近日学习到 WPF 中有一个叫做 Behavior 的扩展方式,可以用来实现页面效果,实现方式更为简便。学习笔记如下:

添加需要的DLL库

要使用 Behavior 的相关功能需要先添加 "System.Windows.Interactivity" 库。可以通过 Nuget 进行安装。

如下图:

安装完成后如下图:

编写自己需要的 EffectBehavior 类

如下代码中,定义的 Behavior 类的为 EffectBehavior。EffectBehavior 需要继承自 Behavior<T>。

按 F12 进入 Behavior 的源码中可知,T (下面代码中为 FrameworkElement)为该行为需要产生作用的元素的类型,通过 AssociatedObject 进行关联。

代码如下:实现了鼠标悬停的时候,元素进行红色边框高亮显示。

using System.Windows;using System.Windows.Interactivity;using System.Windows.Media;using System.Windows.Media.Effects;namespace BehaviorDemo{ // Behavior<T> T设置行为产生作用的元素类型 public class EffectBehavior : Behavior<FrameworkElement> {  //使用 Behavior 必须重写以下两个虚方法  protected override void OnAttached()  {   base.OnAttached();   //AssociatedObject为关联对象, 是Behavior<T>中的T   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;  } }}

界面中引用 EffectBehavior

要在 XAML 代码中使用 Behavior,需要引入命名空间

具体代码如下:

<Window x: 

实现效果如下:









原文转载:http://www.shaoqun.com/a/522371.html

跨境电商:https://www.ikjzd.com/

败欧洲:https://www.ikjzd.com/w/1555

cares:https://www.ikjzd.com/w/1302


WPF中行为(Behavior)的简单使用在我之前的WPF开发中,需要实现一些页面效果时,常使用到的方式就是重写元素的样式(Style),然后再样式里面设置使用元素的各类触发器(Trigger)来实现效果。这样常常需要编写大量的代码。近日学习到WPF中有一个叫做Behavior的扩展方式,可以用来实现页面效果,实现方式更为简便。学习笔记如下:添加需要的DLL库要使用Behavior的相关功能需要先
dmm.adult:dmm.adult
auditor:auditor
为什么偏偏迪拜被视为中东电子商务的"热气球"?:为什么偏偏迪拜被视为中东电子商务的"热气球"?
跨境电商到底要如何选择建站平台?:跨境电商到底要如何选择建站平台?
口述:富婆寂寞游戏竟让送水工当真(4/4):口述:富婆寂寞游戏竟让送水工当真(4/4)

没有评论:

发表评论