问题描述
想让鼠标移到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);}