using MultiLayout;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
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.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Unity;
using UnityConfigurationTree;
using LoadingProgress = MultiLayout.LoadingProgress;
namespace MultiLayout
{
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
IUnityContainer container;
LoadingProgress lp;
FlyLayoutManager manager;
WdMainVm viewModel;
NavigationService NavigationService => frame.NavigationService;
public MainWindow()
{
InitializeComponent();
viewModel = new WdMainVm();
this.DataContext = viewModel;//为了隐藏报警条
}
private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
//---------------------------------------------------------
//转到进度条页面
lp = new LoadingProgress();
PgLoading p = new PgLoading();
p.DataContext = lp;
NavigationService.Navigate(p);
await Task.Delay(1000);
//---------------------------------------------------------
//加载 unity
container = new UnityContainer();
Application.Current.Properties["container"] = container;
container.RegisterInstance(lp);
UnityConfExt.Load(container);
container.RegisterInstance(this);
//---------------------------------------------------------
//加载主界面布局
FlyLayout layout = new FlyLayout();
layout.Load();
//初始化
manager = new FlyLayoutManager();
container.RegisterInstance(manager);
manager.Init(
layout, container, lp);
this.DataContext = manager;
//以后的页面切换器
FlyLayoutManager.NavigationService = NavigationService;
//---------------------------------------------------------
//ui 加载前初始化
await manager.OnPreInit();
//加载模块构造主界面,如果是多设备界面, FlyLayoutManager.NavigationService 会被修改为 page内部的 NavigationService
var page = await manager.LoadModule();
NavigationService.Navigate(page);
page.Loaded += (s, e1) =>
frame.NavigationService.RemoveBackEntry();
//---------------------------------------------------------
//初始化
await manager.OnInit();
//启动Poll系统
//FObjBase.PollModule.Current.Start();
ErrMsgJsonDb jsonDb = new ErrMsgJsonDb();
if (jsonDb.Load()) {
var m = btnErrMsg.Margin;
m.Right = jsonDb.Right;
btnErrMsg.Margin = m;
}
}
private void btnErrMsgClick(object sender, RoutedEventArgs e)
{
manager.ErrMsgClick?.Invoke();
}
private void DrapMoveXBehavior_Move(object sender, EventArgs e)
{
ErrMsgJsonDb jsonDb = new ErrMsgJsonDb();
jsonDb.Right = (int)btnErrMsg.Margin.Right;
jsonDb.Save();
}
}
public class ErrMsgJsonDb
{
public int Right;
private string filePath = "errMsgPosition.json";
public bool Save()
{
try
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(this);
File.WriteAllText(filePath, json);
return true;
}
catch
{
return false;
}
}
public bool Load()
{
if (!File.Exists(filePath))
return false;
try
{
string json = File.ReadAllText(filePath);
Newtonsoft.Json.JsonConvert.PopulateObject(json, this);
return true;
}
catch {
return false;
}
}
}
public class WdMainVm:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public bool IsErrMsgVisable => !string.IsNullOrEmpty(ErrMsg);
///
/// 错误信息
///
public string ErrMsg { get; set; }
}
}