WPF 如何禁用 ismouseover 触发器

问题描述

想让鼠标移到button上的时候改变背景思路是在MouseEnter中改变背景,但是实际上并不生效,每次鼠标移到button上都会出现系统默认的背景。于是我重写了一个button的style,在ismouseover的触发器中改变背景,结果生效。但是我想在代码中能够动态的改变背景。1.请问有没有办法禁用ismouseover触发器,从而可以在MouseEnter事件中进行动态改变。2.ismouseover触发器能不能进行动态的改变背景呢?

解决方案

解决方案二:
什么叫做动态改变,,在IsMouseOver为True或者False的情况分别设置背景就可以了。
解决方案三:
你说的还是在XAML里面设置,但是我想在程序中设置,利用MouseEnter事件,但是有IsMouseOver触发器的情况下,MouseEnter事件中设置背景被证明无效。所以我想知道怎么去掉系统默认的mouseover时的背景而改用我的。但是又不想再XAML中设置buttonstyle还请赐教
解决方案四:
引用2楼JackyGuo77的回复:

你说的还是在XAML里面设置,但是我想在程序中设置,利用MouseEnter事件,但是有IsMouseOver触发器的情况下,MouseEnter事件中设置背景被证明无效。所以我想知道怎么去掉系统默认的mouseover时的背景而改用我的。但是又不想再XAML中设置buttonstyle还请赐教

你在MouseEnter事件中设置Background了么?没有触发器的情况下是可以设置背景色的。
解决方案五:
是啊,但是系统默认是有触发器的,我就想知道怎么禁用这个触发器。。。网上到处找都没答案
解决方案六:
引用3楼duanzi_peng的回复:

Quote: 引用2楼JackyGuo77的回复:
你说的还是在XAML里面设置,但是我想在程序中设置,利用MouseEnter事件,但是有IsMouseOver触发器的情况下,MouseEnter事件中设置背景被证明无效。所以我想知道怎么去掉系统默认的mouseover时的背景而改用我的。但是又不想再XAML中设置buttonstyle还请赐教

你在MouseEnter事件中设置Background了么?没有触发器的情况下是可以设置背景色的。

我就是想禁用这个触发器,不知道该怎么做,网上也找不到
解决方案七:
<Button.Style><Style><SetterProperty="Button.Template"><Setter.Value><ControlTemplateTargetType="{x:TypeButton}"><BorderCursor="Hand"x:Name="Border"Background="{TemplateBindingBackground}"BorderBrush="{TemplateBindingBorderBrush}"BorderThickness="0"Padding="{TemplateBindingPadding}"><ContentPresenterRecognizesAccessKey="True"Content="{TemplateBindingContentControl.Content}"ContentTemplate="{TemplateBindingContentControl.ContentTemplate}"ContentStringFormat="{TemplateBindingContentControl.ContentStringFormat}"Margin="{TemplateBindingControl.Padding}"HorizontalAlignment="{TemplateBindingControl.HorizontalContentAlignment}"VerticalAlignment="{TemplateBindingControl.VerticalContentAlignment}"SnapsToDevicePixels="{TemplateBindingUIElement.SnapsToDevicePixels}"/></Border></ControlTemplate></Setter.Value></Setter><SetterProperty="Button.RenderTransformOrigin"Value="0.5,0.5"></Setter><SetterProperty="Button.RenderTransform"><Setter.Value><TransformGroup><ScaleTransformCenterX="1.0"></ScaleTransform></TransformGroup></Setter.Value></Setter><Style.Triggers><EventTriggerRoutedEvent="Button.MouseLeave"><BeginStoryboard><Storyboard><ColorAnimationStoryboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"RepeatBehavior="1x"Duration="00:00:1"To="AliceBlue"></ColorAnimation></Storyboard></BeginStoryboard></EventTrigger><EventTriggerRoutedEvent="Button.MouseEnter"><BeginStoryboard><Storyboard><DoubleAnimationStoryboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"To="0.9"Duration="00:00:0.1"RepeatBehavior="1x"/></Storyboard></BeginStoryboard></EventTrigger><EventTriggerRoutedEvent="Button.MouseEnter"><BeginStoryboard><Storyboard><DoubleAnimationStoryboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"To="0.9"Duration="00:00:0.1"RepeatBehavior="1x"/></Storyboard></BeginStoryboard></EventTrigger><EventTriggerRoutedEvent="Button.MouseLeave"><BeginStoryboard><Storyboard><DoubleAnimationStoryboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"To="1.0"Duration="00:00:0.1"RepeatBehavior="1x"/></Storyboard></BeginStoryboard></EventTrigger><EventTriggerRoutedEvent="Button.MouseLeave"><BeginStoryboard><Storyboard><DoubleAnimationStoryboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"To="1.0"Duration="00:00:0.1"RepeatBehavior="1x"/></Storyboard></BeginStoryboard></EventTrigger></Style.Triggers></Style></Button.Style>

然后在后台代码动态修改背景颜色:intclickcount=0;privatevoidbutton_MouseEnter(objectsender,MouseEventArgse){clickcount++;SolidColorBrushBBrush=null;//button.Background;switch(clickcount){case0:BBrush=newSolidColorBrush(Colors.Violet);break;case1:BBrush=newSolidColorBrush(Colors.Red);break;case2:BBrush=newSolidColorBrush(Colors.Yellow);break;case3:BBrush=newSolidColorBrush(Colors.Bisque);break;case4:BBrush=newSolidColorBrush(Colors.YellowGreen);break;case5:BBrush=newSolidColorBrush(Colors.RoyalBlue);clickcount=0;break;}button.SetValue(BackgroundProperty,BBrush);}

时间: 2024-09-16 03:42:50

WPF 如何禁用 ismouseover 触发器的相关文章

WPF datagrid 禁用方向键导航

问题描述 使用了datagrid,列很多,选中的时候,希望按<-->直接移动滚动条,而不是在单元格上出一个焦点,焦点移动到最后再滚屏有没有什么好的方法实现?或是配置什么属性? 解决方案 解决方案二:privatevoiddataGrid_KeyDown_1(objectsender,KeyEventArgse){if(e.Key==Key.OemComma){//向下滚动}if(e.Key==Key.OemPeriod){//条向上滚动}} 解决方案三:目前我也是这么做的,可是我希望按方向键的

wpf中的触发器详解

原文 http://zwkufo.blog.163.com/blog/static/25882512009724113250883/ 7.1.2 简单逻辑的表示--触发器(1) 在本章的多处介绍中都会涉及触发器的使用.顾名思义,触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigger.它在特定关联属性发生变化时被触发. (2)数据触发器:其对应的类是DataTrigg

[WPF疑难]如何禁用窗口上的关闭按钮

哈哈,主要是调用RemoveMenu这个API,所以没什么好说的,直接"干货"吧: namespace VersatileMessageBoxLib { using System; using System.Windows.Interop; using System.Runtime.InteropServices; public class CloseButton { [DllImport("user32", CharSet = CharSet.Ansi, SetL

使用SQLServer Audit来监控触发器的启用、禁用情况

原文:使用SQLServer Audit来监控触发器的启用.禁用情况  使用情景:              有时候会发现在触发器中的业务逻辑没有执行,可能是因为触发器的逻辑错误所引起的.但是有时候却是因为一些触发器被禁用了.          由于SQLServer默认不跟踪触发器的启用还是禁用.且禁用触发器的命令(Disable Trigger)不在默认跟踪里面捕获.但是可以在服务器级别的跟踪(不是使用Profiler)获取这些信息,捕获SQL:StmtCompleted并在TextData

PL/SQL --&amp;gt; DML 触发器

--======================= -- PL/SQL --> DML 触发器 --=======================         何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行.对于这样的代码我们称之为触发器 .触发器根据触发类型的不同又分为不同级别的触发器,下面将给出触发器的分类,定义,以及使用的示例.   一.触发器的相关概念     1.触发器的分类         通常根据触发条件以及触发级别的不同分为DM

PL/SQL12.1 ——DML 触发器

 http://blog.csdn.net/robinson_0612/article/details/6098258  何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行.对于这样的代码我们称之为触发器 .触发器根据触发类型的不同又分为不同级别的触发器,下面将给出触发器的分类,定义,以及使用的示例.   一.触发器的相关概念     1.触发器的分类         通常根据触发条件以及触发级别的不同分为DML触发器,INSTEAD OF 触发器,系

sql触发器详解

SQL触发器语法 语法 CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ DELETE ] [ UPDATE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS [ { IF UPDATE ( column ) [ { AND | OR } UPDATE ( column )

收缩表段(shrink space)

--====================-- 收缩表段(shrink space)--==================== 一.表的增长方式    当表被创建后,随着记录的不断插入,组成表的区间会被填满,如果启用了自动扩展,则当区间填满后,会分配新的区间.假定高水    位线随着记录的增加从最左端往右端来移动,当到底部区间的尾端时,则新的区间将会被分配.    二.表可收缩的原理    随着记录的增加高水位线不断的右移,记录的删除不会导致高水位线往回(左)移动    删除记录后的空闲空间

数据库ms SQL常用语句

  数据库ms SQL常用语句 truncate table test --删除表中的所有数据 alter table test alter column bb varchar(10) --修改表中字段的定义 alter table aa add constraint fk foreign key([aa]) references bb([aa]) --外键约束 alter table bb add constraint pr primary key(aa) --主键 exec sp_addty