这里的XAML尝试失败 - 我显然使用Style
/ Setter
语法做了一些愚蠢的事情。我只想通过从ScaleX
设置ScaleY
的{{1}}和ScaleTransform
属性来基于某些绑定来翻转元素。 DataTrigger
显然不支持属性路径,但我怎样才能绕过它呢?我无法设置整个Setter.Property
属性,因为RenderTransform
和ScaleX
是独立的。有什么想法吗?
ScaleY
答案 0 :(得分:6)
您可以使用:
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsChecked, ElementName=FlipX}" Value="True" />
<Condition Binding="{Binding IsChecked, ElementName=FlipY}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="-1" ScaleY="-1" />
</Setter.Value>
</Setter>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsChecked, ElementName=FlipX}" Value="True" />
<Condition Binding="{Binding IsChecked, ElementName=FlipY}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="-1" ScaleY="1" />
</Setter.Value>
</Setter>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsChecked, ElementName=FlipX}" Value="False" />
<Condition Binding="{Binding IsChecked, ElementName=FlipY}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="1" ScaleY="-1" />
</Setter.Value>
</Setter>
</MultiDataTrigger>
</Style.Triggers>
答案 1 :(得分:2)
Setters处理元素,而Transform
并非来自UIElement
,因此我认为您无法使用样式执行此操作。
我在视图模型中修复此问题:实现布尔FlipX
和FlipY
属性,并公开ScaleX
可以ScaleY
和ScaleTransform
属性绑定到。
答案 2 :(得分:0)
Setter.TargetName
。