.net 按钮的控件模板中的TranslateTransform

.net 按钮的控件模板中的TranslateTransform,.net,wpf,xaml,.net,Wpf,Xaml,我正在我的应用程序资源中制作一个自定义按钮。。。我想让它在用户点击按钮时。。文本将进行翻译。。基本上移动按钮的文本以模拟正在按下的按钮。我在网上找不到任何一个例子来解释我是如何做到这一点的 如果它只是一个简单的属性,那就容易多了。。但Translate变换背后的代码相当复杂: <TextBlock Grid.Row="2" Text="Test" VerticalAlignment="Center" HorizontalAlig

我正在我的应用程序资源中制作一个自定义按钮。。。我想让它在用户点击按钮时。。文本将进行翻译。。基本上移动按钮的文本以模拟正在按下的按钮。我在网上找不到任何一个例子来解释我是如何做到这一点的

如果它只是一个简单的属性,那就容易多了。。但Translate变换背后的代码相当复杂:

<TextBlock Grid.Row="2" Text="Test" VerticalAlignment="Center"
                               HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5">
                        <TextBlock.RenderTransform>
                            <TransformGroup>
                                <ScaleTransform/>
                                <SkewTransform/>
                                <RotateTransform/>
                                <TranslateTransform Y="5" X="-5"/>
                            </TransformGroup>
                        </TextBlock.RenderTransform>
                    </TextBlock>
或者我可以做一个简单的设置属性等。这是我到目前为止为我的按钮

<Style TargetType="{x:Type Button}">
            <Setter Property="Width" Value="80" />
            <Setter Property="Height" Value="30" />
            <Setter Property="Margin" Value="5" />
            <Setter Property="TextBlock.FontSize" Value="14" />
            <Setter Property="Background" Value="{StaticResource RCSButtonFace}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Grid>
                            <Rectangle x:Name="rectangle" Fill="WhiteSmoke" Stroke="Black" StrokeThickness="1"/>
                            <ContentPresenter Margin="5" HorizontalAlignment="Center" VerticalAlignment="Center">
                                <ContentPresenter.Resources>
                                    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource WrappingStyle}" />
                                </ContentPresenter.Resources>
                            </ContentPresenter>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True" >
                                <Setter Property="StrokeThickness" TargetName="rectangle" Value="1.5"/>                                
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <!--<Setter Property="Fill" TargetName="rectangle" Value="#D6FFD6"/>-->
                                <Setter Property="Fill" TargetName="rectangle" Value="LightGray"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

一个更简单的方法是留一个余量,然后增加余量。哈哈,那会容易得多。。我可以试试