Files
BR_YKC/上位机/YKC/MainWindow.xaml.cs

111 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace YKC
{
public partial class MainWindow : Window
{
private Dictionary<string, Button> _navButtons = new Dictionary<string, Button>();
private Dictionary<string, string> _navTitles = new Dictionary<string, string>();
private string _username = "Admin";
public void SetUser(string name)
{
_username = name;
if (txtUser != null) txtUser.Text = name;
}
public MainWindow()
{
InitializeComponent();
_navButtons["dashboard"] = btnDashboard;
_navButtons["realtime"] = btnRealtime;
_navButtons["charger"] = btnCharger;
_navButtons["gateway"] = btnGateway;
_navTitles["dashboard"] = "总览";
_navTitles["realtime"] = "实时监控";
_navTitles["charger"] = "充电桩管理";
_navTitles["gateway"] = "网关管理";
txtUser.Text = "Admin";
Loaded += (s, e) =>
{
UdpClientHolder.Instance.OnActiveReport += PilesStoreHolder.Instance.HandleReport;
NavigateTo("dashboard");
};
}
private void SetActiveNav(string key)
{
foreach (var kv in _navButtons)
{
var btn = kv.Value;
var border = btn.Template?.FindName("border", btn) as Border;
if (kv.Key == key)
{
btn.Foreground = new SolidColorBrush(Colors.White);
btn.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#1A3A5C"));
btn.BorderBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#3B82F6"));
btn.BorderThickness = new Thickness(3, 0, 0, 0);
}
else
{
btn.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#8899AA"));
btn.Background = new SolidColorBrush(Colors.Transparent);
btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
btn.BorderThickness = new Thickness(3, 0, 0, 0);
}
}
}
private void NavigateTo(string key)
{
SetActiveNav(key);
txtPageTitle.Text = _navTitles.ContainsKey(key) ? _navTitles[key] : key;
Uri uri;
switch (key)
{
case "dashboard": uri = new Uri("Pages/DashboardPage.xaml", UriKind.Relative); break;
case "realtime": uri = new Uri("Pages/RealtimePage.xaml", UriKind.Relative); break;
case "charger": uri = new Uri("Pages/ChargerPage.xaml", UriKind.Relative); break;
case "gateway": uri = new Uri("Pages/GatewayPage.xaml", UriKind.Relative); break;
default: return;
}
contentFrame.Source = uri;
}
private void NavButton_Click(object sender, RoutedEventArgs e)
{
if (sender is Button btn && btn.Tag is string key)
{
NavigateTo(key);
}
}
private void Logout_Click(object sender, RoutedEventArgs e)
{
var result = MessageBox.Show("确认退出登录?", "退出", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
var loginWin = new LoginWindow();
loginWin.Show();
Close();
}
}
private void Header_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
DragMove();
}
}
}