在画布WPF中使用滑块缩放时,ScaleY不起作用

本文关键字:缩放 不起作用 ScaleY WPF | 更新日期: 2023-09-27 18:28:17

需要帮助来理解为什么我的代码不起作用仅XAML(无代码隐藏)

<Window x:Class="Chapter02.ScaleInCustomSystem"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Scale In Custom System" Height="310" Width="260">
    <StackPanel Height="280" Width="250">
        <Border BorderBrush="Black" BorderThickness="1" Height="200" Width="200" Margin="20">
            <Canvas Height="200" Width="200">
                <Canvas.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleY="-1"/>
                        <TranslateTransform Y="200"/>
                    </TransformGroup>
                </Canvas.RenderTransform>
                <Line X1="0" Y1="0" X2="80" Y2="80" Stroke="Black" StrokeThickness="2">
                    <Line.RenderTransform>
                        <ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}"
                                        ScaleY="{Binding ElementName=slider, Path=value}"/>
                    </Line.RenderTransform>
                </Line>
                <Rectangle Canvas.Top="100" Canvas.Left="30" Width="80" Height="40" Stroke="DarkRed" StrokeThickness="3">
                    <Rectangle.RenderTransform>
                        <ScaleTransform ScaleX="{Binding ElementName=slider, Path=Value}"
                                        ScaleY="{Binding ElementName=slider, Path=value}"/>
                    </Rectangle.RenderTransform>
                </Rectangle>
            </Canvas>
        </Border>
        <Slider Name="slider" Minimum="0" Maximum="3" Value="1" TickPlacement="BottomRight" TickFrequency="0.2" IsSnapToTickEnabled="True"/>
    </StackPanel>
</Window>

当我运行此代码时,滑块只在x轴上缩放图像,y轴不做任何事情,当我只运行带有ScaleY参数的代码时,它什么都不做。我做错了什么?

编辑:为了澄清,我从一本书中提取了这段代码,我正在读这本书来学习WPF。书名是"实用的WPF图形编程"。

在画布WPF中使用滑块缩放时,ScaleY不起作用

value替换为Value。它是区分大小写的

ScaleY="{Binding ElementName=slider, Path=Value}"/>