重新激活应用程序时Silverlight工具包转换停止一半

时间:2012-04-18 18:38:48

标签: silverlight windows-phone-7 xaml transitions

我正在使用nov 11 silverlight工具包,我只是复制粘贴了基本的过渡,为我的应用程序添加了一些功能而没有做太多工作。我指的是这段代码:

<!--some really simple basic navigation animations to get us started-->
<toolkit:TransitionService.NavigationInTransition>
    <toolkit:NavigationInTransition>
        <toolkit:NavigationInTransition.Backward>
            <toolkit:TurnstileTransition Mode="BackwardIn"/>
        </toolkit:NavigationInTransition.Backward>
        <toolkit:NavigationInTransition.Forward>
            <toolkit:TurnstileTransition Mode="ForwardIn"/>
        </toolkit:NavigationInTransition.Forward>
    </toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
    <toolkit:NavigationOutTransition>
        <toolkit:NavigationOutTransition.Backward>
            <toolkit:TurnstileTransition Mode="BackwardOut"/>
        </toolkit:NavigationOutTransition.Backward>
        <toolkit:NavigationOutTransition.Forward>
            <toolkit:TurnstileTransition Mode="ForwardOut"/>
        </toolkit:NavigationOutTransition.Forward>
    </toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>

这很好用,除非我在逻辑删除后重新激活应用程序。似乎过渡中途停止了。应用程序保持响应,但看起来完全搞砸了。像这样:

this screenshot

有谁知道如何解决这个问题?我认为它可能与我的viewmodel有关,并且它在转换期间被填充......所以如果是这样的话,是否有一个事件我可以在转换完成时订阅?然后我可以在我的viewmodel中取消对属性更改事件的解除。但是,当我只是在我的应用程序中导航时,过渡效果非常好,所以可能不是它。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

试试此代码:http://blog.rsuter.com/?p=74

您可以在App.xaml中定义多个转场:

<Application.Resources>
    <ResourceDictionary>
        <Style x:Key="Transition" TargetType="phone:PhoneApplicationPage">
            ...
        </Style>
        <Style x:Key="Transition2" TargetType="phone:PhoneApplicationPage">
            ...
        </Style>
        <Style x:Key="Transition3" TargetType="phone:PhoneApplicationPage">
            ...
        </Style>
    </ResourceDictionary>
</Application.Resources>

并为每个页面设置转换:

第1页:

<phone:PhoneApplicationPage ... Style="{StaticResource Transition}">

在第2页:

<phone:PhoneApplicationPage ... Style="{StaticResource Transition2}">

在第3页:

<phone:PhoneApplicationPage ... Style="{StaticResource Transition3}">

您是否尝试过将资源声明移至页面?

这样的事情:

<phone:PhoneApplicationPage x:Name="MyPage">
    <phone:PhoneApplicationPage.Resources>
        <Style x:Key="LocalTransition">
            ...
        </Style>
    </phone:PhoneApplicationPage.Resources>
</phone:PhoneApplicationPage>

C#代码背后:

public class MyPage
{
    public MyPage()
    {
        InitializeComponent();
        Style = (Style)Resources["LocalTransition"];
    }
}