WPF - 在可视树中设置较低/较高的动画对象

时间:2010-03-08 18:09:44

标签: wpf

我有以下问题。 我创建了Style for ContentControl,可以移动/拖动特定项目。 这是在MoveControl(:Control)的帮助下创建的,它控制鼠标按下/移动/向上事件。在这个类中定义了DependencyProperty IsDragging属性,我想用它来改变状态时淡入/淡出项目。

我的syle的Xaml文件看起来像这样。

<Style x:Key="ItemStyle" TargetType="ContentControl">
   <!-- ... -->
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl" x:Name="ctrl">
                <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=.}">

                    <s:MoveControl Cursor="SizeAll" Template="{StaticResource MoveThumbTemplate}" x:Name="moveThumb"/>

                </Grid>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    <!-- ... -->
    </Setter>
</Style>

因此,当MoveControl.IsDragging设置为true / false时,我想创建将在使用ItemStyle设置样式的ContentControl上完成的动画。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现了。 解决方案是使用SourceName属性并将其链接到使用依赖项属性的对象。问题是默认情况下'this'对象引用元素的DataContext值。 如果将SourceName属性设置为非空值,则数据绑定操作会将该值视为推送和取出数据的位置

                    <ControlTemplate.Triggers>
                    <Trigger SourceName="moveThumb" Property="IsDragging" Value="true" >
                        <Trigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" 
                         From="1.0" To="0.3" Duration="0:0:0.2"/>
                                </Storyboard>
                            </BeginStoryboard>
                        </Trigger.EnterActions>
                    </Trigger>

                </ControlTemplate.Triggers>