98 lines
3.0 KiB
C#
98 lines
3.0 KiB
C#
|
using HandyControl.Data;
|
|||
|
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.Imaging;
|
|||
|
using System.Windows.Navigation;
|
|||
|
using System.Windows.Shapes;
|
|||
|
using HandyControl.Tools;
|
|||
|
using HandyControl.Tools.Extension;
|
|||
|
using CommunityToolkit.Mvvm.Messaging;
|
|||
|
using CommunityToolkit.Mvvm.Messaging.Messages;
|
|||
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|||
|
using System.Reflection;
|
|||
|
using System.Diagnostics.Eventing.Reader;
|
|||
|
using System.Windows.Forms;
|
|||
|
namespace LiveTools.Content
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// MainContent.xaml 的交互逻辑
|
|||
|
/// </summary>
|
|||
|
public partial class MainContent
|
|||
|
{
|
|||
|
|
|||
|
public MainContent()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
WeakReferenceMessenger.Default.Register<string>(this, OnReceive);
|
|||
|
}
|
|||
|
/// <summary>
|
|||
|
///
|
|||
|
/// </summary>
|
|||
|
public object SubContent
|
|||
|
{
|
|||
|
get;set;
|
|||
|
}
|
|||
|
private rySafe.UsingLock<object> ui_lock=new rySafe.UsingLock<object>();
|
|||
|
private List<System.Windows.Controls.UserControl> list_ui = new List<System.Windows.Controls.UserControl>();
|
|||
|
public System.Windows.Controls.UserControl GetUI(Type type)
|
|||
|
{
|
|||
|
using (ui_lock.Write())
|
|||
|
{
|
|||
|
var find = list_ui.FindIndex(x => x.GetType() == type);
|
|||
|
if (find == -1)
|
|||
|
{
|
|||
|
var ctl = (System.Windows.Controls.UserControl)Activator.CreateInstance(type);
|
|||
|
list_ui.Add(ctl);
|
|||
|
return ctl;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return list_ui[find];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
private void OnReceive(object recipient, string message)
|
|||
|
{
|
|||
|
if (SubContent is IDisposable disposable)
|
|||
|
{
|
|||
|
disposable.Dispose();
|
|||
|
}
|
|||
|
switch (message)
|
|||
|
{
|
|||
|
case "login":
|
|||
|
if (Config.IsLogin() == 1)
|
|||
|
{
|
|||
|
SubContent = GetUI(typeof(FrmAccountInfo));
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
SubContent = GetUI(typeof(FrmLogin));
|
|||
|
}
|
|||
|
break;
|
|||
|
case "home":
|
|||
|
SubContent = GetUI(typeof(FrmAccountInfo));
|
|||
|
break;
|
|||
|
case "rules":
|
|||
|
SubContent = GetUI(typeof(FrmRuleView));
|
|||
|
break;
|
|||
|
case "direct":
|
|||
|
SubContent = GetUI(typeof(FrmDirectView));
|
|||
|
break;
|
|||
|
case "setting":
|
|||
|
SubContent = GetUI(typeof(FrmSetting));
|
|||
|
break;
|
|||
|
}
|
|||
|
PresenterMain.Content= SubContent;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|