Wpf 除了1个控件外,是否可以在画布/网格上缩放所有内容?
给定以下画布:Wpf 除了1个控件外,是否可以在画布/网格上缩放所有内容?,wpf,Wpf,给定以下画布: <Canvas> <Canvas.LayoutTransform> <ScaleTransform ScaleX="1" ScaleY="1" CenterX=".5" CenterY=".5" /> </Canvas.LayoutTransform> <Button x:Name="scaleButton" Content="Scale Me" Canvas.Top="10" Canv
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
<Button x:Name="scaleButton" Content="Scale Me" Canvas.Top="10" Canvas.Left="10" />
<Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50" />
</Canvas>
当ScaleX和ScaleY发生变化时,是否可以缩放1个按钮,但不能缩放另一个按钮?不在XAML中。通过构建反向变换并将其应用于不希望变换的对象,可以在代码中实现这一点
如果您想做得更好,可以构建一个依赖属性,您可以在XAML中将它附加到任何不希望被任何父变换变换的对象。此依赖项属性将接受父对象的转换,构建反向转换并将其应用于所附加的对象。您还可以重新构造元素,以便不希望使用
画布进行缩放的元素实际上不是该画布的子对象
<Canvas>
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
<Button x:Name="scaleButton" Content="Scale Me" Canvas.Top="10" Canvas.Left="10" />
</Canvas>
<Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50" />
</Canvas>
当你问这个问题时,我不确定这是否是不可能的,但我会这样处理:
<Button x:Name="dontScaleButton" Content="DON'T Scale Me" Canvas.Top="10" Canvas.Left="50"
LayoutTransform="{Binding LayoutTransform.Inverse,
RelativeSource={RelativeSource AncestorType=Canvas}}"/>
不过,原始变换似乎仍然对按钮具有平移效果