1

私の英語でごめんなさい。私はWPFが初めてで、1つの質問があります。がトリガーされたCanvasときにパス (画像) が含まれているの視覚スタイルを変更したい。isMouseOver

手順:

  • キャンバスをウィンドウに配置
  • インクルード パス

結果:

<Canvas x:Name="mycanvas" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
         <Path Width="40" Height="30" Canvas.Left="18" Canvas.Top="23" Stretch="Fill" Fill="#FF000000" Data="F1 M 18,23L 58,23L 58,53L 18,53L 18,23 Z M 54,31L 22,31L 22,49L 54,49L 54,31 Z M 45,38L 45,42L 31,42L 31,38L 45,38 Z "/>
    </Canvas>

次に、キャンバスをButtonスタイルと組み合わせ、「パス」が発生した場合は白色で塗りつぶしisMouseOverます。

私のスタイル:

<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="{x:Type Button}">
    <Canvas x:Name="mycanvas" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
        <Path x:Name="path" Width="40" Canvas.Top="23" Stretch="Fill" Canvas.Left="18" Height="30" Fill="#FF000000" Data="F1 M 18,23L 58,23L 58,53L 18,53L 18,23 Z M 54,31L 22,31L 22,49L 54,49L 54,31 Z M 45,38L 45,42L 31,42L 31,38L 45,38 Z "/>
        </Canvas>
    <ControlTemplate.Triggers>
    <Trigger Property="IsFocused" Value="True"/>
    <Trigger Property="IsDefaulted" Value="True"/>
    <Trigger Property="IsMouseOver" Value="True" SourceName="mycanvas">
        <Setter Property="Fill" TargetName="path" Value="White"/>
    </Trigger>
    <Trigger Property="IsPressed" Value="True"/>
        <Trigger Property="IsEnabled" Value="False"/>
    </ControlTemplate.Triggers>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
</Style>

ただしIsMouseOver、マウスが画像 (「パス」) サーフェスを通過する場合にのみ機能します。しかし、像面は小さく、切れ目が入っています。どうすればこの問題を解決できますか?

4

1 に答える 1

3

色付きのCanvas Backgroundput aで:SolidColorBrushTransparent

 <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Canvas x:Name="mycanvas" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
                        <Canvas.Background>
                            <SolidColorBrush Color="Transparent"/>
                        </Canvas.Background>
                        <Path x:Name="path" Width="40" Canvas.Top="23" Stretch="Fill" Canvas.Left="18" Height="30" Fill="#FF000000" Data="F1 M 18,23L 58,23L 58,53L 18,53L 18,23 Z M 54,31L 22,31L 22,49L 54,49L 54,31 Z M 45,38L 45,42L 31,42L 31,38L 45,38 Z "/>
                    </Canvas>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True" SourceName="mycanvas">
                            <Setter Property="Fill" TargetName="path" Value="White"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2013-07-08T17:07:23.860 に答える