XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEWarframe

【WinUI】基于Warframe游戏本体的公开服务器以及安装器

公开
关注 0 Fork 0 Star 0
UTF-8
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Navigation;

namespace XFEWarframe.Desktop.Editing;

/// <summary>Native back and sidebar navigation use the same unsaved-input protection.</summary>
public sealed class EquipmentNavigationGuard
{
    private bool approved, prompting;
    public async void Navigating(Page page, EquipmentEditorModel model, NavigatingCancelEventArgs args)
    {
        if (approved) { approved = false; return; }
        if (model.IsBusy) { args.Cancel = true; return; }
        if (!model.HasChanges) return;
        args.Cancel = true;
        if (prompting) return;
        prompting = true;
        try
        {
            if (!await model.CanDiscardAsync()) return;
            approved = true;
            if (args.NavigationMode == NavigationMode.Back) page.Frame.GoBack();
            else if (args.NavigationMode == NavigationMode.Forward) page.Frame.GoForward();
            else page.Frame.Navigate(args.SourcePageType, args.Parameter, args.NavigationTransitionInfo);
        }
        finally { prompting = false; }
    }
}