【发布时间】:2011-08-18 16:01:51
【问题描述】:
这里的 XAML 尝试失败 - 我显然在使用 Style/Setter 语法做一些愚蠢的事情。我只想通过从DataTrigger 设置ScaleTransform 的ScaleX 和ScaleY 属性来翻转基于某些绑定的元素。 Setter.Property 显然不支持属性路径,但是我该如何解决呢?我无法设置整个RenderTransform 属性,因为ScaleX 和ScaleY 是独立的。有什么想法吗?
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBlock FontSize="50" RenderTransformOrigin=".5,.5">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=FlipX}" Value="True">
<Setter Property="RenderTransform.ScaleX" Value="-1"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=FlipY}" Value="True">
<Setter Property="RenderTransform.ScaleY" Value="-1"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
<TextBlock.RenderTransform>
<ScaleTransform/>
</TextBlock.RenderTransform>
Hello World
</TextBlock>
<CheckBox Name="FlipX">Flip x</CheckBox>
<CheckBox Name="FlipY">Flip y</CheckBox>
</StackPanel>
</Page>
【问题讨论】:
-
将 RenderTransform 设置为 StaticResource 转换,其中 ScaleX 和 ScaleY 在您的触发器中已设置为 -1。
-
@Will 但是 ScaleX 和 ScaleY 是独立的 - 有一个复选框可以控制它们。
-
@H.B.有点,但解决方案是将 Style 应用于子属性。我做不到。
-
@TimRogers:哎呀,哎呀。那么它有点复杂。我无法回答。