Button
によって定義されたカスタムの外観を持つ がありControlTemplate
ます。
を含む が含まれてCanvas
いますPath
。Path.Opacity
マウスの状態に応じて変更を追加したいと思います。
- デフォルト - 0.5
- マウスオーバー、押されていない - 1.0
- マウスオーバー、プレス - 0.5
最初のケースは、 のローカル値を設定し、 に 1 を追加するだけでカバーPath.Opacity
され0.5
ます。Trigger
IsMouseOver
<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>
ただし、3 番目のケースは機能しません。次のトリガーを追加しました。
<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.5
ではなく に変更されるため、これにこだわっています。0.75
トリガーは適用されているようですが、期待どおりに機能しません...