Files
OrpaonVision/OrpaonVision.ConfigApp/MainWindow.xaml.cs
2026-04-06 22:04:05 +08:00

145 lines
4.5 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using OrpaonVision.ConfigApp.ViewModels;
using OrpaonVision.ConfigApp.Views;
using System.Windows;
namespace OrpaonVision.ConfigApp
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private readonly MainWindowViewModel _viewModel;
private readonly IServiceProvider _serviceProvider;
/// <summary>
/// 主窗口构造函数。
/// </summary>
/// <param name="viewModel">主窗口 ViewModel。</param>
public MainWindow(MainWindowViewModel viewModel, IServiceProvider serviceProvider)
{
_viewModel = viewModel;
_serviceProvider = serviceProvider;
InitializeComponent();
Title = "OrpaonVision ConfigApp (CVAT)";
DataContext = _viewModel;
}
private async void OnCheckStatusClicked(object sender, RoutedEventArgs e)
{
await _viewModel.CheckStatusAsync();
}
private async void OnQueryTaskDetailClicked(object sender, RoutedEventArgs e)
{
await _viewModel.QueryTaskDetailAsync();
}
private async void OnSyncClicked(object sender, RoutedEventArgs e)
{
await _viewModel.SyncAsync();
}
private async void OnSaveRuleDraftClicked(object sender, RoutedEventArgs e)
{
await _viewModel.SaveRuleDraftAsync();
}
private async void OnPublishRuleVersionClicked(object sender, RoutedEventArgs e)
{
await _viewModel.PublishRuleVersionAsync();
}
private void OnAddRuleLayerClicked(object sender, RoutedEventArgs e)
{
_viewModel.AddRuleLayerRow();
}
private void OnRemoveRuleLayerClicked(object sender, RoutedEventArgs e)
{
_viewModel.RemoveSelectedRuleLayerRow();
}
private void OnAddRulePartClicked(object sender, RoutedEventArgs e)
{
_viewModel.AddRulePartRow();
}
private void OnRemoveRulePartClicked(object sender, RoutedEventArgs e)
{
_viewModel.RemoveSelectedRulePartRow();
}
private void OnAddRuleRoiClicked(object sender, RoutedEventArgs e)
{
_viewModel.AddRuleRoiRow();
}
private void OnRemoveRuleRoiClicked(object sender, RoutedEventArgs e)
{
_viewModel.RemoveSelectedRuleRoiRow();
}
private void OnAddRuleItemClicked(object sender, RoutedEventArgs e)
{
_viewModel.AddRuleItemRow();
}
private void OnRemoveRuleItemClicked(object sender, RoutedEventArgs e)
{
_viewModel.RemoveSelectedRuleItemRow();
}
private async void OnCompareVersionsClicked(object sender, RoutedEventArgs e)
{
await _viewModel.CompareVersionsAsync();
}
private async void OnRollbackVersionClicked(object sender, RoutedEventArgs e)
{
await _viewModel.RollbackVersionAsync();
}
private async void OnQueryRuleAuditClicked(object sender, RoutedEventArgs e)
{
await _viewModel.QueryRecentRuleAuditsAsync();
}
private async void OnDisableRuleVersionClicked(object sender, RoutedEventArgs e)
{
await _viewModel.DisableVersionAsync();
}
private async void OnQueryRuleVersionDetailClicked(object sender, RoutedEventArgs e)
{
await _viewModel.QueryVersionDetailAsync();
}
private async void OnQueryRuleVersionPagedClicked(object sender, RoutedEventArgs e)
{
await _viewModel.QueryVersionPagedListAsync();
}
private void OpenTrainingTaskManagement_Click(object sender, RoutedEventArgs e)
{
_viewModel.OpenTrainingTaskManagement();
}
private void OpenProductionSessionManagement_Click(object sender, RoutedEventArgs e)
{
try
{
var viewModel = _serviceProvider.GetRequiredService<ProductionSessionManagementViewModel>();
var window = new Views.ProductionSessionManagementWindow(viewModel);
window.Show();
}
catch (Exception ex)
{
MessageBox.Show($"打开产品会话管理窗口失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
}