using System.Collections.ObjectModel; using System.Diagnostics; using Microsoft.UI; using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Controls; using Microsoft.UI.Xaml.Input; using RustTools.muqing; using WinRT.Interop; namespace RustTools.Editor; /// /// 编辑器主窗口 /// public sealed partial class EditorWin : WindowEx { private readonly ObservableCollection TabViewList = new(); //目录列表 public ObservableCollection DataSource = new(); /// /// 编辑器主窗口 /// 传入路径 /// /// public EditorWin(string path) { InitializeComponent(); gj.SetBackTheme(this); ExtendsContentIntoTitleBar = true; var frame = App.AppTitlebar as FrameworkElement; if (frame != null) { gj.UpdateTitleBar(this, frame.ActualTheme); page.RequestedTheme = frame.ActualTheme; } //Debug.WriteLine(path); var directoryInfo = new DirectoryInfo(path); Title = directoryInfo.Name; TitleText.Text = directoryInfo.Name; DataSource = EditorLoad.GetData(directoryInfo.FullName); treeView.ItemsSource = DataSource; Closed += EditorWin_Closed; } //用户有没有保存 private bool IsSave = true; private ContentDialog? ClosedDialog = null; private async void EditorWin_Closed(object sender, WindowEventArgs e) { if (IsSave == false) { // 防止窗口关闭 e.Handled = true; } if (ClosedDialog != null) { return; } // 显示一个对话框,告知用户窗口不能关闭 ClosedDialog = new ContentDialog { XamlRoot = page.XamlRoot, Title = "警告", Content = "你还有未保存的文件在编译器中。", PrimaryButtonText = "保存关闭", PrimaryButtonStyle = Application.Current.Resources["AccentButtonStyle"] as Style, SecondaryButtonText = "直接关闭", CloseButtonText = "取消" }; var result = await ClosedDialog.ShowAsync(); if (result == ContentDialogResult.Primary) { IsSave = true; Application.Current.Exit(); return; } else if (result == ContentDialogResult.Secondary) { IsSave = true; Application.Current.Exit(); return; } ClosedDialog = null; } }