使用DataTrigger设置ScaleTransform的属性

时间:2011-08-18 16:01:52

标签: wpf xaml

这里的XAML尝试失败 - 我显然使用Style / Setter语法做了一些愚蠢的事情。我只想通过从ScaleX设置ScaleY的{​​{1}}和ScaleTransform属性来基于某些绑定来翻转元素。 DataTrigger显然不支持属性路径,但我怎样才能绕过它呢?我无法设置整个Setter.Property属性,因为RenderTransformScaleX是独立的。有什么想法吗?

ScaleY

3 个答案:

答案 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,因此我认为您无法使用样式执行此操作。

我在视图模型中修复此问题:实现布尔FlipXFlipY属性,并公开ScaleX可以ScaleYScaleTransform属性绑定到。

答案 2 :(得分:0)

  • 使用动画,可以是单帧和&amp;瞬间。
  • 或者在ContentControl的模板中封装一些此结构。然后,您可以为转化命名,然后尝试使用Setter.TargetName
  • 进行定位