本文介绍: 背景:实现按钮鼠标移动到上方有点交互效果或变一下有阴影。这样使用触发器就行了,但是如果是每个控件都有效果的话使用行为更加合适。1、下载NuGet包:Microsoft.xaml.behavior.wpf。2、创建行为类EffectBehavior,对Behavior进行重写。– 就是简单加上鼠标移动到控件上面加上阴影效果。4、将自己重写的behavior给控件使用。3、在xaml中引入NuGet的命名空间。总结:对Behavior进行重写罢了。同样也是这个NuGet的使用。
背景:实现按钮鼠标移动到上方有点交互效果或变一下有阴影。这样使用触发器就行了,但是如果是每个控件都有效果的话使用行为更加合适
1、下载NuGet包:Microsoft.xaml.behavior.wpf
2、创建行为类EffectBehavior,对Behavior进行重写
public class EffectBehavior : Behavior<FrameworkElement>
{
protected override void OnAttached()
{
base.OnAttached();
// 这个时候的AssociatedObject就是FrameworkElement,因为泛型传过去了
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;
}
}
— 就是简单加上鼠标移动到控件上面加上阴影效果
— 抽象类Behavior的泛型传入的是FrameworkElement是因为,大多数控件都是由它派生出来的,具体可以查看这个文章的WPF控件结构:https://www.cnblogs.com/zh7791/p/11372473.html
3、在xaml中引入NuGet的命名空间
4、将自己重写的behavior给控件使用
<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>
总结:对Behavior进行重写罢了
同样也是这个NuGet的使用
WPF实现更加灵活绑定复杂Command(使用Microsoft XAML Behaviors 库)_wpf 绑定复杂类型-CSDN博客
原文地址:https://blog.csdn.net/weixin_46407807/article/details/135760692
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_60707.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。