第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

UWP 連接動(dòng)畫在第二次使用后崩潰

UWP 連接動(dòng)畫在第二次使用后崩潰

C#
瀟湘沐 2021-07-05 17:59:38
我已經(jīng)用一個(gè)點(diǎn)擊事件連接了兩個(gè)表單,該事件在兩個(gè)方向上觸發(fā)了一個(gè)連接的動(dòng)畫。第一次前進(jìn)和后退它工作正常。第二次前進(jìn)它可以工作,但嘗試第二次返回會(huì)導(dǎo)致應(yīng)用程序崩潰并出現(xiàn)以下異常:System.ArgumentException: 參數(shù)不正確。無法啟動(dòng)動(dòng)畫 - 源元素不在元素樹中。這發(fā)生在 SecondPage_BackRequested 的第一行,但僅在第二次執(zhí)行時(shí)發(fā)生。第一次執(zhí)行工作和動(dòng)畫完美。任何幫助將不勝感激。我已經(jīng)翻閱了相關(guān)的動(dòng)畫文檔,據(jù)我所知,這是應(yīng)該如何使用它的,但是我找不到任何地方發(fā)生的此錯(cuò)誤的參考。我的代碼(MainPageViewModel 被省略,因?yàn)樗幌嚓P(guān),但可以根據(jù)要求添加):主頁.xaml<Page    x:Class="AnimTest.Views.Main.MainPage"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    xmlns:models="using:AnimTest.Models"    xmlns:main="using:AnimTest.Views.Main"    mc:Ignorable="d">    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"          Padding="10">        <Grid.RowDefinitions>            <RowDefinition Height="Auto"/>            <RowDefinition Height="*"/>        </Grid.RowDefinitions>        <TextBlock Grid.Row="0"                   Style="{ThemeResource HeaderTextBlockStyle}"                   Text="AnimTest"/>        <GridView x:Name="TileGrid"                  Grid.Row="1"                  IsItemClickEnabled="True"                  ItemsSource="{x:Bind ViewModel.Tiles, Mode=OneWay}"                  ItemClick="GridView_ItemClick"                  Loaded="TileGrid_Loaded">            <GridView.ItemTemplate>                <DataTemplate x:DataType="models:Tile">                    <Border x:Name="TileBorder"                            Background="Red"                            MinHeight="150"                            MinWidth="200">
查看完整描述

1 回答

?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

問題實(shí)際上不在于連接的動(dòng)畫,而在于導(dǎo)航事件。


第一次到達(dá)時(shí),SecondPage您連接了BackRequested活動(dòng),當(dāng)您返回時(shí),一切都很好。然而,事件處理程序停留配屬到事件即使您在導(dǎo)航SecondPage。這是一個(gè)問題,因?yàn)橐坏┠鉙econdPage再次導(dǎo)航到,現(xiàn)在偶數(shù)將被注冊兩次。并且處理程序第一次運(yùn)行時(shí)失敗,因?yàn)榈谝粋€(gè)處理程序連接到頁面的前一個(gè)實(shí)例,并且連接的動(dòng)畫已經(jīng)完成了這個(gè)。最后 - 由于事件,頁面將永遠(yuǎn)留在內(nèi)存中,這可能會(huì)導(dǎo)致嚴(yán)重的內(nèi)存泄漏。


解決方案非常簡單 - 您必須確保在離開頁面時(shí)不要忘記取消訂閱偶數(shù)處理程序,例如在OnNavigatedFrom方法中并在OnNavigatedTo方法中訂閱以獲得更好的清晰度:


public sealed partial class SecondPage : Page

{

    public SecondPage()

    {

        this.InitializeComponent();


    }


    protected override void OnNavigatedFrom(NavigationEventArgs e)

    {

        base.OnNavigatedFrom(e);

        SystemNavigationManager.GetForCurrentView().BackRequested -= SecondPage_BackRequested;

    }


    private void SecondPage_BackRequested(object sender, BackRequestedEventArgs e)

    {

        ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("borderOut", MainBorder);

        Frame?.GoBack();

        e.Handled = true;

    }


    protected override void OnNavigatedTo(NavigationEventArgs e)

    {

        base.OnNavigatedTo(e);

        SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

        SystemNavigationManager.GetForCurrentView().BackRequested += SecondPage_BackRequested;


        var animation = ConnectedAnimationService.GetForCurrentView().GetAnimation("borderIn");

        animation?.TryStart(MainBorder);

    }

}

為了避免這種問題,我通常在BackRequested中為整個(gè)應(yīng)用程序設(shè)置事件,App并在啟動(dòng)時(shí)只訂閱一次。然后,您可以將連接的動(dòng)畫代碼放入OnNavigatedFrom方法中,而不必訂閱BackRequested:


protected override void OnNavigatedFrom(NavigationEventArgs e)

{

    base.OnNavigatedFrom(e);       

    ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("borderOut", MainBorder);

}


查看完整回答
反對 回復(fù) 2021-07-10
  • 1 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號