UWP ContentControl不应用ContentThemeTransition

时间:2016-11-20 10:51:12

标签: c# uwp transitions uwp-xaml

我试图让ContentControl应用ContentThemeTransition,其中内容将是一个字符串,因此当字符串通过绑定更改时,新字符串将会生成动画。我可以&将ContentThemeTransitionTextBlock一起使用,因为这并非来自ContentControl

以下是一些显示问题的示例XAML。如果我编辑文本框中的文本(它代表我的ViewModel中ContentControl真正绑定的文本),我希望ContentControl中显示的文本可以动画显示,但它不会#39 ;吨

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition/>  
        <RowDefinition/>
    </Grid.RowDefinitions>

    <TextBox Grid.Row="0" x:Name="text" Text="Hello" Width="100" Height="30"/>
    <ContentControl  Grid.Row="1" Width="100"  Height="100" Content="{Binding ElementName=text , Path=Text}">
        <ContentControl.Transitions>
            <TransitionCollection>
                <ContentThemeTransition HorizontalOffset="40"/>
            </TransitionCollection>
        </ContentControl.Transitions>
    </ContentControl>
</Grid>

我做错了什么?

非常感谢您的任何帮助。

更新:

好的,现在到了某个地方。如果将ContentControl XAML替换为

<ContentPresenter Background="Black" Foreground="Red"  Grid.Row="1" Width="100"  Height="100" Content="{Binding ElementName=text , Path=Text}">
        <ContentPresenter.ContentTransitions>
            <TransitionCollection>
                <ContentThemeTransition VerticalOffset="-100"/>
            </TransitionCollection>
        </ContentPresenter.ContentTransitions>
    </ContentPresenter>

然后它的工作原理。奇怪的是,如上所述,VerticalOffset = -100,新值在ContentControl之外设置为动画。它在控制范围之外可见。任何人都知道如何改变事物,因此动画只出现在ContentPresenter

的范围内

1 个答案:

答案 0 :(得分:1)

经过我的测试,您的第一个<ContentThemeTransition HorizontalOffset="40"/>和第二个<ContentThemeTransition VerticalOffset="-100"/>都可以正常工作,但只是第一次,您可以放大HorizontalOffset进行测试并检查它是否有效。

由于您希望每次更改文本时动画都能正常工作,我认为您需要创建一个直接定位Text TextBlock的动画,而不是定位Content } ContentControl

在这种情况下,XAML Behaviors将是一个好帮手。您可以参考@Jerry Nixon - MSFT的答案:How to animate TextBlock when its value changes in WinRT XAML?

<强>更新

我的错误,我只是注意到您已将HorizontalOffset更改为VerticalOffset。您实际上也已将ContentControl更改为ContentPresenter

根据UWP的UI坐标,由于您的动画定位ContentPresenter,因此请考虑ContentPresent的左上角是(0,0)。当你设置<ContentThemeTransition VerticalOffset="-100"/>时,它会从向上(0,-100)转换回(0,0)并且它肯定会在ContentPresent之外生成动画,我认为它的设计是这样的,而且我们无法改变它。在这里,我只能建议将过渡从低到高修改为<ContentThemeTransition VerticalOffset="100"/>,这会有所帮助,但最终会改变你的动画,所以我不认为这是一个好方法。