using GalaSoft.MvvmLight.Ioc;
using GalaSoft.MvvmLight.Messaging;
using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using Bro.UI.Ctrls;
using Bro.UI.ViewModel;
namespace Bro.UI
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : MetroWindow
{
ManualResetEvent loadHandle = new ManualResetEvent(false);
///
/// Initializes a new instance of the MainWindow class.
///
public MainWindow()
{
Messenger.Default.Register(this, "ProcessDone", OnProcessChanged);
InitializeComponent();
SimpleIoc.Default.Register(() => DialogCoordinator.Instance, "Main");
Closing += (s, e) =>
{
ViewModelLocator.Cleanup();
(this.DataContext as MainViewModel)?.Cleanup();
Messenger.Default.Unregister(this);
};
Closed += (s, e) => Application.Current.Shutdown();
Loaded += (s, e) =>
{
loadHandle.Set();
};
}
private void OnProcessChanged(string obj)
{
Task.Run(() =>
{
loadHandle.WaitOne();
runningViewBorder.Dispatcher.Invoke(() =>
{
RunningView view = new RunningView();
view.Margin = new Thickness(3, 3, 3, 0);
runningViewBorder.Child = view;
});
gridInfo.Dispatcher.Invoke(() =>
{
gridInfo.Children.Clear();
InformationCtrl infoCtrl = new InformationCtrl();
gridInfo.Children.Add(infoCtrl);
});
});
}
}
}