添加项目文件。

This commit is contained in:
2026-04-30 11:34:41 +08:00
parent a8539ccaac
commit 80635aa46e
181 changed files with 16378 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
namespace SamplePre.UIWpf.BaseWindows
{
public class BaseWindow : Window
{
public BaseWindow()
{
//InitializeStyle();
//this.Loaded += delegate
//{
// InitializeEvent();
//};
InitializeStyle();
// 一定要在 Loaded 里执行,确保模板已加载
Loaded += (s, e) => InitializeEvent();
}
private void InitializeEvent()
{
// ✅ 关键:从可视化树查找模板内的元素
Button btnMin = FindChild<Button>(this, "btnMin");
Button btnMax = FindChild<Button>(this, "btnMax");
Button btnClose = FindChild<Button>(this, "btnClose");
Border borderTitle = FindChild<Border>(this, "borderTitle");
// 最小化
if (btnMin != null)
btnMin.Click += (s, e) => WindowState = WindowState.Minimized;
// 最大化/还原
if (btnMax != null)
btnMax.Click += (s, e) =>
WindowState = WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal;
// 关闭
if (btnClose != null)
btnClose.Click += (s, e) => Close();
// 拖动窗口
if (borderTitle != null)
{
borderTitle.MouseMove += (s, e) =>
{
if (e.LeftButton == MouseButtonState.Pressed)
DragMove();
};
// 双击标题最大化
borderTitle.MouseLeftButtonDown += (s, e) =>
{
if (e.ClickCount >= 2)
WindowState = WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal;
};
}
}
#region
/// <summary>
/// 在可视化树中查找指定名称的子元素
/// </summary>
public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject
{
if (parent == null) return null;
T foundChild = null;
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is T tChild && child is FrameworkElement element && element.Name == childName)
{
foundChild = tChild;
break;
}
foundChild = FindChild<T>(child, childName);
if (foundChild != null) break;
}
return foundChild;
}
#endregion
private void InitializeStyle()
{
Style = (Style)Application.Current.Resources["BaseWindowStyle"];
}
////==================================================
//private void InitializeEvent()
//{
// ControlTemplate baseWindowTemplate = (ControlTemplate)App.Current.Resources["BaseWindowControlTemplate"];
// //Button minBtn = (Button)baseWindowTemplate.FindName("btnMin", this);
// //minBtn.Click += delegate
// //{
// // this.WindowState = WindowState.Minimized;
// //};
// //Button maxBtn = (Button)baseWindowTemplate.FindName("btnMax", this);
// //maxBtn.Click += delegate
// //{
// // this.WindowState = (this.WindowState == WindowState.Normal ? WindowState.Maximized : WindowState.Normal);
// //};
// //Button closeBtn = this.FindName("btnClose") as Button;
// Button closeBtn = (Button)baseWindowTemplate.FindName("btnClose", this);
// closeBtn.Click += delegate
// {
// this.Close();
// };
// Border borderTitle = (Border)baseWindowTemplate.FindName("borderTitle", this);
// borderTitle.MouseMove += delegate (object sender, MouseEventArgs e)
// {
// if (e.LeftButton == MouseButtonState.Pressed)
// {
// this.DragMove();
// }
// };
// borderTitle.MouseLeftButtonDown += delegate (object sender, MouseButtonEventArgs e)
// {
// if (e.ClickCount >= 2)
// {
// //maxBtn.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
// }
// };
//}
//private void InitializeStyle()
//{
// this.Style = (Style)App.Current.Resources["BaseWindowStyle"];
//}
}
}