XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
GB18030 / GBK
using Microsoft.UI.Xaml.Media.Animation;
using Microsoft.UI.Xaml.Navigation;
using SpaceEngineersBlueprintEditor.Model;
using SpaceEngineersBlueprintEditor.Utilities;
using SpaceEngineersBlueprintEditor.ViewModels;
using XFEExtension.NetCore.WinUIHelper.Utilities;

namespace SpaceEngineersBlueprintEditor.Views;

/// <summary>
/// 蓝图详情页面
/// </summary>
public sealed partial class BlueprintDetailPage : Page
{
    public static BlueprintDetailPage? Current { get; set; }
    public BlueprintDetailPageViewModel ViewModel { get; set; } = new();
    public BlueprintDetailPage()
    {
        PageManager.AddOrUpdateCurrentPage(Current = this);
        NavigationCacheMode = NavigationCacheMode.Enabled;
        this.InitializeComponent();
        ViewModel.AutoNavigationParameterService.Initialize(this);
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        ViewModel.AutoNavigationParameterService.OnParameterChange(e.Parameter);
        if (e.Parameter is BlueprintInfoViewData parameter)
        {
            ConnectedAnimationService.GetForCurrentView().GetAnimation("ForwardConnectedAnimation")?.TryStart(detailPreviewImage, []);
            detailPreviewImage.Source = parameter.BlueprintImage;
        }
    }

    protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        base.OnNavigatingFrom(e);
        if (e.SourcePageType == typeof(BlueprintsViewPage))
            ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("BackConnectedAnimation", detailPreviewImage);
        if (e.SourcePageType != typeof(BlueprintEditPage))
            ViewModel.BackgroundImageService?.ResetBackground();
    }
}