111 lines
3.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|