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

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using XFEToolBox.Client.Model;
using XFEToolBox.Client.Views.Windows;

namespace XFEToolBox.Client.Views.Pages.Popups;

public partial class ToolConfigurationPopupPage : Page, IPopupPage
{
    private readonly bool _requiresAdministrator;
    private readonly bool _initialUserPreference;

    public ToolConfigurationPopupPage(
        string toolName,
        bool userRunAsAdministrator,
        bool requiresAdministrator,
        ImageSource shieldIcon)
    {
        InitializeComponent();
        _requiresAdministrator = requiresAdministrator;
        _initialUserPreference = userRunAsAdministrator;
        ToolNameText.Text = toolName;
        RunAsAdministratorCheckBox.IsChecked = requiresAdministrator || userRunAsAdministrator;
        RunAsAdministratorCheckBox.IsEnabled = !requiresAdministrator;
        ManifestRequirementText.Visibility = requiresAdministrator ? Visibility.Visible : Visibility.Collapsed;
        ShieldImage.Source = shieldIcon;
    }

    public PopupWindow? PopupWindow { get; set; }

    public bool UserRunAsAdministrator { get; private set; }

    private async void SaveButton_Click(object sender, RoutedEventArgs e)
    {
        UserRunAsAdministrator = _requiresAdministrator
            ? _initialUserPreference
            : RunAsAdministratorCheckBox.IsChecked == true;
        if (PopupWindow is not null)
            await PopupWindow.CloseWithResultAsync(MessageBoxResult.OK);
    }

    private async void CancelButton_Click(object sender, RoutedEventArgs e)
    {
        if (PopupWindow is not null)
            await PopupWindow.CloseWithResultAsync(MessageBoxResult.Cancel);
    }
}