ControlTemplate
으로 정의 된 사용자 정의 모양의 Button
이 있습니다.트리거를 사용한 WPF 버튼 동작
이 포함되어 있으며 Path
이 포함되어 있습니다. 나는 마우스 상태에 따라 Path.Opacity
에 변경 내용을 추가하고 싶습니다 :
- 기본 - 이상 누르지 0.5
- 마우스 - 이상 누르면 1.0
- 마우스 - 0.5
첫 번째 경우 로컬 값 Path.Opacity
을 0.5
으로 설정하고 에 대해 Trigger
을 추가하여 간단하게 다룹니다.
<Button x:Class="ImagingShop.Panosphere.Controls.PathButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="100" d:DesignWidth="100"
Name="pathButton">
<Button.Template>
<ControlTemplate>
<Canvas Background="Transparent" Width="{TemplateBinding Width}" Height="{TemplateBinding Width}">
<Canvas.Style>
<Style TargetType="Canvas">
<Setter Property="Path.Opacity" Value="0.5"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Path.Opacity" Value="1.0"/>
</Trigger>
</Style.Triggers>
</Style>
</Canvas.Style>
<Path Data="{Binding ElementName=pathButton, Path=PathData}" Stretch="Uniform" Fill="#FFFFFFFF" Width="{TemplateBinding Width}" Height="{TemplateBinding Width}"/>
</Canvas>
</ControlTemplate>
</Button.Template>
<Grid>
</Grid>
</Button>
그러나 세 번째 경우는 작동하지 않습니다. 나는 다음과 같은 트리거를 추가 한 :
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="Button.IsPressed" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Path.Opacity" Value="0.75"/>
</MultiTrigger>
그래서이 마우스 버튼을 누를 때 및 버튼 위에 놓을 Path.Opacity
입니다 0.75
에 설정해야합니다.
불투명도가 0.75
대신 0.5
으로 변경되었으므로이 문제로 고민했습니다. 트리거는 적용 할 것 같지만에 트리거를 예상대로 왜 그냥 Button
의 Opacity
사용하지 않는 ...
그래서 XAML을 사용하여 버튼을 다시 스타일화할 수 없습니까? Button.IsPressed가 작동해야합니다. [XAML 예제] (http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.buttonbase.ispressed.aspx)가 있습니다. . – Libor