WPF行为基础
2024-09-14 14:21:30
理解行为
复杂的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>
最新文章
- Leetcode 3Sum Closest
- 使用PowerDesigner导出MySQL数据库建模
- JavaScript TDD with Mocha
- android assets文件夹资源的访问
- HTML参考
- How to create jar for Android Library Project
- Java—Map.Entry
- sql 作业+游标 自动备份数据库
- 【Java】Java Socket编程(1)基本的术语和概念
- asp.net学习之 数据绑定控件--表格绑定控件
- Visual Studio For MacOS .NetCore开发踩坑记
- <;大话设计模式>;笔记
- LeetCode算法题-1-bit and 2-bit Characters(Java实现)
- EasyUI整合篇
- 20164320 王浩 Exp1 PC平台逆向破解
- c——动态数组
- gearman(异步计算)学习
- div设置contenteditable=";true"; 光标消失:原因
- pycharm 调试 scrapy
- SSM数据库数据导出excel