using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using SparkClient.Model.Helper; using SparkClient.ViewModel.BaseWindow; namespace SparkClient.Views.BaseWindow; public partial class BaseControl { private Window parentWindow; public BaseControl() { InitializeComponent(); // 动态设置圆角裁剪 this.Loaded += (s, e) => ApplyCornerRadiusClip(); this.SizeChanged += (s, e) => ApplyCornerRadiusClip(); // 保证在大小改变时也裁剪 FocusManager.SetFocusedElement(this, this); Keyboard.Focus(this); #if DEBUG tbTitle.Text = tbTitle.Text + " -【测试版】"; #endif } private void Border_Minimize_MouseEnter(object sender, MouseEventArgs e) { // 鼠标进入时更改背景色 if (sender is Border border) { border.Background = new SolidColorBrush(Color.FromArgb(50, 255, 255, 255)); } } private void Border_Close_MouseEnter(object sender, MouseEventArgs e) { // 鼠标进入时更改背景色 if (sender is Border border) { border.Background = new SolidColorBrush(Color.FromArgb(50, 255, 0, 0)); } } private void Border_MouseLeave(object sender, MouseEventArgs e) { // 鼠标离开时恢复背景色 if (sender is Border border) { border.Background = new SolidColorBrush(Colors.Transparent); } } private void ApplyCornerRadiusClip() { // 使用矩形几何生成圆角裁剪 this.Clip = new RectangleGeometry { Rect = new Rect(0, 0, this.ActualWidth, this.ActualHeight), RadiusX = this.CornerRadius.TopLeft, // 使用 Border 的 CornerRadius RadiusY = this.CornerRadius.TopLeft }; } private void Minimize_Click(object sender, MouseButtonEventArgs e) { //this.WindowState = WindowState.Minimized; if(parentWindow != null)parentWindow.WindowState = WindowState.Minimized; } private void Close_Click(object sender, MouseButtonEventArgs e) { parentWindow.Close(); } private void UIElement_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { try { // this.DragMove(); } catch (InvalidOperationException ex) { } } } private void BaseControl_OnLoaded(object sender, RoutedEventArgs e) { parentWindow = Window.GetWindow(this); } private void UIElement_OnKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Escape) { if (DataContext is BaseControlVM vm) { vm.CloseVM(""); } } } }