You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
3.2 KiB
118 lines
3.2 KiB
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); |
|
string runModel = ConfigurationHelper.ReadConfigValue("RunModel"); |
|
if ("0".Equals(runModel)) |
|
//json模式 |
|
runModel = " -【Json模式】"; |
|
else if ("1".Equals(runModel)) |
|
{ |
|
runModel = " -【Image模式】"; |
|
} |
|
else |
|
{ |
|
runModel = string.Empty; |
|
} |
|
|
|
tbTitle.Text = tbTitle.Text + runModel; |
|
} |
|
|
|
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(""); |
|
} |
|
} |
|
} |
|
} |