【发布时间】:2014-06-27 23:27:59
【问题描述】:
当我的鼠标悬停在另一个控件上时,我试图调用控件的设计状态。 示例:我的鼠标悬停在“按钮 A”上,我希望“按钮 B”改变其设计。
所以我尝试在我的模板中管理这个:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<Style x:Key="ButtonStepperStyle" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Button.Margin" Value="0" />
<Setter Property="Button.Padding" Value="0,-8,0,0" />
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="Bordure"
Height="25"
BorderBrush="Transparent"
BorderThickness="2">
<!--<Border.Background>
<ImageBrush Stretch="Fill" RenderOptions.BitmapScalingMode="Fant" ImageSource="images/design/in game/bouton_back.png"/>
</Border.Background>-->
<Grid>
<ContentPresenter Grid.Column="1"
Name="bla"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Content">
</ContentPresenter>
</Grid>
</Border>
<ControlTemplate.Triggers>
<!--<Trigger Property="Tag">
<Trigger.Value>
<sys:Int32>1</sys:Int32>
</Trigger.Value>
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurBoutonHover}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexteBoutonHover}" />
<Setter TargetName="Bordure" Property="Background" Value="{DynamicResource CouleurBoutonHover}" />
<Setter Property="Cursor" Value="Hand" />
</Trigger>-->
<DataTrigger Binding="{Binding Path=Tag, RelativeSource={RelativeSource Self}}" Value="1">
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurBoutonHover}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexteBoutonHover}" />
<Setter TargetName="Bordure" Property="Background" Value="{DynamicResource CouleurBoutonHover}" />
<Setter Property="Cursor" Value="Hand" />
</DataTrigger>
<MultiTrigger>
<!-- Bouton normal -->
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="False" />
<Condition Property="Button.IsPressed" Value="False" />
<Condition Property="IsEnabled" Value="true" />
</MultiTrigger.Conditions>
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurSecondaire}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexte}" />
<Setter TargetName="Bordure" Property="Background" Value="Transparent" />
<Setter Property="Cursor" Value="Hand" />
</MultiTrigger>
<MultiTrigger>
<!-- Bouton over -->
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="Button.IsPressed" Value="False" />
<Condition Property="IsEnabled" Value="true" />
</MultiTrigger.Conditions>
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurBoutonHover}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexteBoutonHover}" />
<Setter TargetName="Bordure" Property="Background" Value="{DynamicResource CouleurBoutonHover}" />
<Setter Property="Cursor" Value="Hand" />
</MultiTrigger>
<MultiTrigger>
<!-- Bouton pressed -->
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="Button.IsPressed" Value="True" />
<Condition Property="IsEnabled" Value="true" />
</MultiTrigger.Conditions>
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurBoutonPressed}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexteBoutonPressed}" />
<Setter TargetName="Bordure" Property="Background" Value="{DynamicResource CouleurBoutonPressed}" />
<Setter Property="Cursor" Value="Hand" />
</MultiTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Bordure" Property="BorderBrush" Value="{DynamicResource CouleurBoutonDisabled}"/>
<Setter TargetName="bla" Property="TextBlock.Foreground" Value="{DynamicResource CouleurTexteBoutonDisabled}" />
<Setter TargetName="Bordure" Property="Background" Value="Transparent" />
<Setter Property="Cursor" Value="Arrow" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是我的按钮的样式,我处理了事件 Mouse Enter 和 mouse Leave 并将“button B”的 Tag 在“Button A”的 Mouse enter 上设置为 1,在“Button A”上设置为 0鼠标离开。
我的反应是如果 Tag=1 则更改背景和前景。我已经尝试了几个带有触发器和数据触发器的选项,但它们似乎都不起作用。
我该如何解决这个问题?
谢谢!
【问题讨论】: