添加项目文件。
This commit is contained in:
280
SamplePreSystemApp/AppMainView.xaml.cs
Normal file
280
SamplePreSystemApp/AppMainView.xaml.cs
Normal file
@@ -0,0 +1,280 @@
|
||||
using MaterialDesignThemes.Wpf;
|
||||
using SamplePre.Models.Tables;
|
||||
using SamplePre.UIWpf;
|
||||
using SamplePre.UIWpf.ConfigManager;
|
||||
using SamplePre.UIWpf.ParamManager;
|
||||
using SamplePre.UIWpf.QueryManager;
|
||||
using SamplePre.UIWpf.SampleManager;
|
||||
using SamplePreSystem.UI;
|
||||
using SamplePreSystem.UI.ConfigManager;
|
||||
using SamplePreSystem.UI.ViewModel.Login;
|
||||
using SamplePreSystem.UI.Views;
|
||||
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.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace SamplePreSystemApp
|
||||
{
|
||||
/// <summary>
|
||||
/// AppMainView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class AppMainView : Window
|
||||
{
|
||||
|
||||
private bool _isMaximized = false; // 窗口是否最大化
|
||||
private Rect _normalWindowRect; // 记录还原时的位置大小
|
||||
|
||||
private MonitorView monitorView;
|
||||
|
||||
public AppMainView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
AppMainViewModel vm = new AppMainViewModel();
|
||||
this.DataContext = vm;
|
||||
|
||||
var view = CollectionViewSource.GetDefaultView(vm.MenuBars) as ListCollectionView;
|
||||
//按照Name分组
|
||||
view.GroupDescriptions.Add(new PropertyGroupDescription("description"));
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MaximizeWindow();
|
||||
|
||||
//打开样品监控
|
||||
OpenSampleMonitor();
|
||||
}
|
||||
|
||||
private void btnMin_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.WindowState = WindowState.Minimized;
|
||||
//MaximizeWindow();
|
||||
}
|
||||
|
||||
private void btnMax_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
MaximizeWindow();
|
||||
}
|
||||
|
||||
private void btnClose_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
if (MessageBox.Show("是否退出系统?", "退出提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void btnUserInfo_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// 打开用户信息窗口
|
||||
UserInfoWindow userInfoWindow = new UserInfoWindow();
|
||||
userInfoWindow.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void MaximizeWindow()
|
||||
{
|
||||
if (_isMaximized)
|
||||
{
|
||||
// 还原
|
||||
this.WindowState = WindowState.Normal;
|
||||
this.Left = _normalWindowRect.Left;
|
||||
this.Top = _normalWindowRect.Top;
|
||||
this.Width = _normalWindowRect.Width;
|
||||
this.Height = _normalWindowRect.Height;
|
||||
//BtnMaximize.Content = new PackIcon { Kind = PackIconKind.WindowMaximize, Width = 16, Height = 16, Foreground = Brushes.White };
|
||||
}
|
||||
else
|
||||
{
|
||||
// 先记录当前位置
|
||||
_normalWindowRect = new Rect(this.Left, this.Top, this.Width, this.Height);
|
||||
|
||||
// 工作区最大化(不挡任务栏)
|
||||
var workArea = SystemParameters.WorkArea;
|
||||
this.Left = workArea.Left;
|
||||
this.Top = workArea.Top;
|
||||
this.Width = workArea.Width;
|
||||
this.Height = workArea.Height;
|
||||
//BtnMaximize.Content = new PackIcon { Kind = PackIconKind.WindowRestore, Width = 16, Height = 16, Foreground = Brushes.White };
|
||||
}
|
||||
_isMaximized = !_isMaximized;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 拖拽标题栏
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ColorZone_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (e.LeftButton == MouseButtonState.Pressed)
|
||||
{
|
||||
this.DragMove();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开功能界面
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void FuncListbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
|
||||
// 获取 ListBox 本身
|
||||
ListBox listBox = sender as ListBox;
|
||||
|
||||
// 获取选中项
|
||||
var selectedItem = listBox.SelectedItem as MenuBarFuc;
|
||||
|
||||
//this.txt_currFunc.Text = selectedItem.name;
|
||||
|
||||
switch (selectedItem.id)
|
||||
{
|
||||
case 5:
|
||||
|
||||
OpenSampleMonitor();
|
||||
break;
|
||||
case 6:
|
||||
this.MainFrame.Navigate(new SampleExecView());
|
||||
break;
|
||||
case 8:
|
||||
this.MainFrame.Navigate(new SampleQueryView());
|
||||
|
||||
break;
|
||||
case 9:
|
||||
break;
|
||||
case 10:
|
||||
this.MainFrame.Navigate(new ParamManagerView());
|
||||
break;
|
||||
case 11:
|
||||
this.MainFrame.Navigate(new ActionManagerView());
|
||||
break;
|
||||
case 12:
|
||||
this.MainFrame.Navigate(new SopManagerView());
|
||||
break;
|
||||
case 13:
|
||||
this.MainFrame.Navigate(new UsersView());
|
||||
break;
|
||||
case 14:
|
||||
this.MainFrame.Navigate(new RoleView());
|
||||
break;
|
||||
case 15:
|
||||
this.MainFrame.Navigate(new SysConfigMangerView());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开首页,监控界面
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void btnMonitor_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
OpenSampleMonitor();
|
||||
}
|
||||
|
||||
public void OpenSampleMonitor()
|
||||
{
|
||||
if (monitorView == null)
|
||||
{
|
||||
monitorView = new MonitorView();
|
||||
}
|
||||
this.MainFrame.Navigate(monitorView);
|
||||
}
|
||||
|
||||
// 收缩菜单:宽度=0,内容隐藏
|
||||
private void MenuToggleButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MenuContent.Visibility = Visibility.Collapsed;
|
||||
MenuContainer.BeginAnimation(Grid.WidthProperty, new DoubleAnimation(0, TimeSpan.FromMilliseconds(200)));
|
||||
|
||||
//MenuToggleButton.Foreground = new SolidColorBrush(Color.FromArgb(1,0,113,203));
|
||||
|
||||
|
||||
MenuToggleButton.Foreground = new SolidColorBrush(Color.FromRgb(0, 113, 203));
|
||||
|
||||
|
||||
}
|
||||
|
||||
// 展开菜单:宽度=220,内容显示
|
||||
private void MenuToggleButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MenuContainer.BeginAnimation(Grid.WidthProperty, new DoubleAnimation(200, TimeSpan.FromMilliseconds(200)));
|
||||
MenuContent.Visibility = Visibility.Visible;
|
||||
MenuToggleButton.Foreground = new SolidColorBrush(Colors.White);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 分组标题点击事件 → 折叠/展开子项
|
||||
/// </summary>
|
||||
private void GroupHeader_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
// 获取点击的标题容器
|
||||
var border = sender as Border;
|
||||
if (border == null) return;
|
||||
|
||||
// 获取箭头图标
|
||||
var icon = FindVisualChild<PackIcon>(border);
|
||||
// 获取子项容器
|
||||
var itemsPresenter = FindVisualChild<ItemsPresenter>(border.Parent as FrameworkElement);
|
||||
if (icon == null || itemsPresenter == null) return;
|
||||
|
||||
// 切换折叠/展开状态
|
||||
if (icon.Tag.ToString() == "Expanded")
|
||||
{
|
||||
// 折叠
|
||||
icon.Kind = PackIconKind.ChevronRight;
|
||||
icon.Tag = "Collapsed";
|
||||
itemsPresenter.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 展开
|
||||
icon.Kind = PackIconKind.ChevronDown;
|
||||
icon.Tag = "Expanded";
|
||||
itemsPresenter.Visibility = Visibility.Visible;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 可视化树查找子元素(通用工具方法)
|
||||
/// </summary>
|
||||
private T FindVisualChild<T>(DependencyObject parent) where T : DependencyObject
|
||||
{
|
||||
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
|
||||
{
|
||||
var child = VisualTreeHelper.GetChild(parent, i);
|
||||
if (child is T result) return result;
|
||||
var childResult = FindVisualChild<T>(child);
|
||||
if (childResult != null) return childResult;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user