13

マウスが上にあるボタンで背景の境界線を表示する必要があります

シンプルなスタイルを作りました

<UserControl.Resources>
        <Style TargetType="Button" x:Key="TransparentButton">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border Background="Transparent">
                            <ContentPresenter/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

そしてボタンで

<Button  Height="20" Width="20"  Padding="0,0,0,0" DockPanel.Dock="Top" Grid.Row="0" Grid.Column="1" Click="button_click"  Style="{StaticResource TransparentButton}"
                    BorderBrush="Transparent" BorderThickness="0" Background="Transparent">
            <Button.Content>
                <Image Source="../Resources/Help_icon.png" Stretch="UniformToFill" />
            </Button.Content>
            </Button>

ただし、この場合、ボタンを押しても UI に表示されません。ユーザーはボタンが押されたと感じるはずです。

感謝と敬意

4

4 に答える 4

16

視覚的に何をしたいのかわかりませんが、ボタンが押されたときに境界線の色を変えたい場合は、テンプレートを次のように変更します。

<Style TargetType="Button" x:Key="TransparentButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Black">
                    <ContentPresenter/>
                </Border>

                <ControlTemplate.Triggers>
                    <Trigger Property="Button.IsPressed" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="Transparent" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
于 2012-05-31T19:37:44.983 に答える
5

ボタンの ControlTemplate を再作成すると、Windows ボタンの感触のすべてのデフォルト機能が失われます。トリガーを使用してそれらを再作成するか、独自のコントロール テンプレートを使用しない必要があります。

<ControlTemplate.Triggers>
   <Trigger Property="IsPressed" Value="True">
       <Setter ....behavior you want
   </Trigger>
</ControlTemplate.Triggers>

これは、ボタンが持つ MSDN の既定のコントロール テンプレートへのリンクです。これを参照として使用して、独自の定義によって失われた動作の一部を再現できます。

http://msdn.microsoft.com/en-us/library/ms753328%28v=vs.85%29.aspx

于 2012-05-31T19:28:03.450 に答える
0
Try this one...

<Style x:Key="PressedButtonEffect" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" Background="Transparent" BorderThickness="1" BorderBrush="Gray">
                        <ContentPresenter/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="Button.IsPressed" Value="True">
                            <Setter TargetName="border" Property="BorderBrush" Value="DarkGray" />
                            <Setter TargetName="border" Property="BorderThickness" Value="2" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2016-10-06T11:00:11.147 に答える