【问题标题】:Convert a WPF Swipe Transition Datatemplate with DataTriggers to Silverlight4将带有 DataTriggers 的 WPF 滑动转换数据模板转换为 Silverlight4
【发布时间】:2023-03-24 18:50:01
【问题描述】:

我正在开发的 WPF 应用程序中有以下数据模板。这提供了一个很棒的滑动过渡,最初取自 this blog post

我想做的就是在 Silverlight 4 中实现同样的功能。令我恐惧的是,SL4 缺少 DataTriggers 和某些情节提要。任何人都可以阐明等价物吗?或者,您能否指出我可以偷猎的 Silverlight 中网络上的滑动过渡?谢谢!!

滑动过渡

<DataTemplate x:Key="SwipeTransition">
        <DataTemplate.Resources>
            <Visibility x:Key="Visible">Visible</Visibility>
            <Storyboard x:Key="SlideStoryboard">
                <DoubleAnimation 
                    Storyboard.TargetName="container" 
                    Storyboard.TargetProperty="RenderTransform.(TranslateTransform.X)"
                    From="0" FillBehavior="Stop"
                    Duration="0:0:0.3"
                    DecelerationRatio="1.0"/>
                <ObjectAnimationUsingKeyFrames 
                    Storyboard.TargetName="a" 
                    Storyboard.TargetProperty="Visibility" 
                    Duration="0:0:0.3" FillBehavior="Stop">
                    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource Visible}" />
                </ObjectAnimationUsingKeyFrames>
                <ObjectAnimationUsingKeyFrames 
                    Storyboard.TargetName="b"
                    Storyboard.TargetProperty="Visibility" 
                    Duration="0:0:0.3" FillBehavior="Stop">
                    <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource Visible}" />
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </DataTemplate.Resources>
        <Grid ClipToBounds="True">
            <Common:Transition x:Name="transition" Source="{Binding}" />
            <Grid Name="container">
                <Grid.RenderTransform>
                    <TranslateTransform X="{Binding ElementName=container, Path=ActualWidth, Converter={StaticResource NegativeConverter}}" />
                </Grid.RenderTransform>
                <ContentControl Name="a" Visibility="Hidden" Content="{Binding ElementName=transition, Path=DisplayA}" />
                <ContentControl Name="b" Visibility="Hidden" Content="{Binding ElementName=transition, Path=DisplayB}" />
            </Grid>
        </Grid>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding ElementName=transition, Path=State}" Value="A">
                <Setter TargetName="a" Property="Visibility" Value="Visible" />
                <Setter TargetName="a" Property="RenderTransform">
                    <Setter.Value>
                        <TranslateTransform X="{Binding ElementName=container, Path=ActualWidth}" />
                    </Setter.Value>
                </Setter>
                <DataTrigger.EnterActions>
                    <BeginStoryboard Storyboard="{StaticResource SlideStoryboard}" />
                </DataTrigger.EnterActions>
            </DataTrigger>
            <DataTrigger Binding="{Binding ElementName=transition, Path=State}" Value="B">
                <Setter TargetName="b" Property="Visibility" Value="Visible" />
                <Setter TargetName="b" Property="RenderTransform">
                    <Setter.Value>
                        <TranslateTransform X="{Binding ElementName=container, Path=ActualWidth}" />
                    </Setter.Value>
                </Setter>
                <DataTrigger.EnterActions>
                    <BeginStoryboard Storyboard="{StaticResource SlideStoryboard}" />
                </DataTrigger.EnterActions>
            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>     

应用如下

<ContentControl x:Name="_exampleView" Content="{Binding SelectedExample.View}"
                            ContentTemplate="{StaticResource SwipeTransition}"/>

【问题讨论】:

    标签: wpf silverlight xaml transition datatrigger


    【解决方案1】:

    首先非常感谢您的链接。

    也许你应该看看这篇帖子How to create a WPF-like data trigger in Silverlight?,他们说 VSM 是获得 Silverlight 的方法。

    【讨论】:

    • 嘿,谢谢 :) 是的,我对 VSM 或 Silverlight 没有太多经验。我已经将上述内容与 WPF 应用程序集成,但我还在 SL4 中编写了一个跨平台的等效程序。我想故事板的整个 VSM 等效项也会很有用。您能否就我如何实现这一点提供任何启示或提示?打算查找 VSM 并做一些研究,但任何信息都将不胜感激!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2010-11-14
    相关资源
    最近更新 更多