using System;
using System.Windows;
using BetterGenshinImpact.Helpers.Ui;
using BetterGenshinImpact.ViewModel.Windows.GearTask;
using BetterGenshinImpact.ViewModel.Pages.Component;
using Microsoft.Extensions.DependencyInjection;
using BetterGenshinImpact.Service;
using Microsoft.Extensions.Logging;
namespace BetterGenshinImpact.View.Windows.GearTask;
public partial class AddTriggerDialog
{
public AddTriggerDialogViewModel ViewModel { get; }
public AddTriggerDialog(AddTriggerDialogViewModel viewModel)
{
ViewModel = viewModel;
DataContext = ViewModel;
InitializeComponent();
ViewModel.RequestClose += OnRequestClose;
this.SourceInitialized += OnSourceInitialized;
this.Loaded += OnLoaded;
}
private void OnSourceInitialized(object? sender, EventArgs e)
{
// 应用与主窗口相同的背景主题
WindowHelper.TryApplySystemBackdrop(this);
}
private void OnLoaded(object sender, RoutedEventArgs e)
{
// 自动聚焦到名称输入框
TriggerNameTextBox.Focus();
TriggerNameTextBox.SelectAll();
}
private void OnRequestClose(object? sender, bool result)
{
DialogResult = result;
Close();
}
///
/// 显示新增触发器对话框
///
/// 如果用户点击确定返回创建的触发器ViewModel,否则返回null
public static AddTriggerDialogViewModel? ShowAddTriggerDialog()
{
// 使用依赖注入获取 ViewModel
var storageService = App.GetRequiredService();
var logger = App.GetRequiredService>();
var viewModel = new AddTriggerDialogViewModel(storageService, logger);
var dialog = new AddTriggerDialog(viewModel)
{
Owner = Application.Current.MainWindow
};
var result = dialog.ShowDialog();
return result == true ? dialog.ViewModel : null;
}
///
/// 显示新增触发器对话框,指定触发器类型
///
/// 预定义的触发器类型
/// 如果用户点击确定返回创建的触发器ViewModel,否则返回null
public static AddTriggerDialogViewModel? ShowAddTriggerDialog(TriggerType predefinedType)
{
// 使用依赖注入获取 ViewModel
var storageService = App.GetRequiredService();
var logger = App.GetRequiredService>();
var viewModel = new AddTriggerDialogViewModel(storageService, logger, predefinedType);
var dialog = new AddTriggerDialog(viewModel)
{
Owner = Application.Current.MainWindow
};
var result = dialog.ShowDialog();
return result == true ? dialog.ViewModel : null;
}
}