1

ボタンのマウスオーバーイベントでいくつかのアニメーションを実行するコントロールを作成しようとしています。最初の機能は、ボタンが padding=2 を取り、列全体を占有する必要があることです。私にはそれができません。マウスオーバーでボタンの幅を狭めようとしている場合はできますが、幅を広げようとするとボタンは拡大されますが、拡大された部分は表示されません。同じものを実装する方法は?

コントロール テンプレートで以下のコードを使用しています。変更を提案してください:-

<!--Create a control template for button-->
<ControlTemplate x:Key="buttonAnimate" TargetType="Button">
    <Grid Name="myGrid">
        <Button Name="myButton" Background="{TemplateBinding Background }" Width="{TemplateBinding Width}">
        </Button>
    <Border Name="MyBorder" BorderBrush="Orange" BorderThickness="3" CornerRadius="2"></Border>
    </Grid>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="DarkRed" TargetName="MyBorder"/>
            <Setter Property="Width" Value="200" TargetName="myButton"/>
            <Setter Property="Cursor" Value="Hand" TargetName="myGrid"/>
            <Setter Property="Width" Value="300" TargetName="myButton"/>
            <Setter Property="Width" Value="300" TargetName="MyBorder"/>
            <Setter Property="Padding" Value="2" TargetName="myButton"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

前もって感謝します。

4

1 に答える 1

0

あなたのボタンはグリッドによってクリップされています。ClipsToBounds プロパティを false に設定するか、これを試してください:

public class MyButton : Button
{
    protected override Geometry GetLayoutClip(Size layoutSlotSize)
    {
        return ClipToBounds ? base.GetLayoutClip(layoutSlotSize) : null;
    }
}

それが役に立てば幸い。

于 2013-03-08T22:06:22.410 に答える