理解行为

复杂的UI效果(缩放、拖拽、平滑等)通过样式与触发器比较难以实现,通过引入行为模型来实现。使用行为也可以处理UI操作之外的业务

程序集引用 System.Windows.Interactivity.dll (基础) Microsoft.Expression.Interactions.dll (扩展)

自定义行为继承

继承behavior<UIElement> 或 behavior<FrameworkElement>

自定义行为实现

重载 OnAttached()OnDetaching()方法 ,AssociatedObject 属性对应放置行为的元素,在OnAttach()中关联事件处理器,通过事件处理器来实现业务,OnDetaching() 中做事件移除操作

命空间应用以及xaml代码

自定义行为

public class MyBehavior : Behavior<Button>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.Click += AssociatedObject_Click;
} protected override void OnDetaching()
{
base.OnDetaching();
this.AssociatedObject.Click -= AssociatedObject_Click;
} private void AssociatedObject_Click(object sender, RoutedEventArgs e)
{
if (sender is Button btn)
{
DoubleAnimation doubleAnimation = new DoubleAnimation();
doubleAnimation.Duration = new TimeSpan(100);
doubleAnimation.To = 100;
btn.BeginAnimation(Button.WidthProperty, doubleAnimation);
}
}
}
<!-- 命名空间
xmlns: i="clr-namespace=System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:mybehavior="clr-namespace:---"
-->
<i:interaction.Behavior>
<mybehavior:MyBehavoir/>
</i:interaction.Behavior>

行为基用法

<!--xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"-->

<i:Interaction.Triggers>
<i:EventTrigger EventName="IsMouseOver">
<i:InvokeCommandAction Command="{Binding MouseOverCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>

最新文章

  1. Leetcode 3Sum Closest
  2. 使用PowerDesigner导出MySQL数据库建模
  3. JavaScript TDD with Mocha
  4. android assets文件夹资源的访问
  5. HTML参考
  6. How to create jar for Android Library Project
  7. Java—Map.Entry
  8. sql 作业+游标 自动备份数据库
  9. 【Java】Java Socket编程(1)基本的术语和概念
  10. asp.net学习之 数据绑定控件--表格绑定控件
  11. Visual Studio For MacOS .NetCore开发踩坑记
  12. &lt;大话设计模式&gt;笔记
  13. LeetCode算法题-1-bit and 2-bit Characters(Java实现)
  14. EasyUI整合篇
  15. 20164320 王浩 Exp1 PC平台逆向破解
  16. c——动态数组
  17. gearman(异步计算)学习
  18. div设置contenteditable=&quot;true&quot; 光标消失:原因
  19. pycharm 调试 scrapy
  20. SSM数据库数据导出excel

热门文章

  1. leedCode
  2. Jenkins+Docker+Git 自动化部署
  3. python 函数基础知识
  4. ThreadPoolTaskExecutor原理、详解及案例
  5. linux发布常用命令
  6. spring-boot-learning-配置文件相关
  7. jdk 8 HashMap源码解读
  8. MM32F0020 UART1硬件自动波特率的使用
  9. input 弹起数字键盘的那些坑
  10. 根据地理信息绘画的html5 小游戏 - 简单实现