/// <summary> /// Phone模式附加标题右键菜单 /// </summary> /// <param name="p_elem">标题元素</param> /// <param name="p_win">所属窗口</param> public static void OnPhoneTitleTapped(FrameworkElement p_elem, Win p_win) { if (p_elem == null || p_win == null) { return; } p_elem.RightTapped += (s, e) => { if (_menu == null) { _menu = new Menu { IsContextMenu = true, Placement = MenuPosition.BottomLeft }; var item = new Mi { ID = "取消自启动" }; item.Click += (o, a) => Startup.DelAutoStart(); _menu.Items.Add(item); item = new Mi { ID = "设置自启动" }; item.Click += SetAutoStart; _menu.Items.Add(item); item = new Mi { ID = "系统监视" }; item.Click += (o, a) => SysTrace.ShowBox(); _menu.Items.Add(item); } var autoStart = AtState.GetAutoStart(); if (autoStart != null && autoStart.WinType == p_win.GetType().AssemblyQualifiedName && (p_win.Params == null || autoStart.Params == JsonSerializer.Serialize(p_win.Params, JsonOptions.UnsafeSerializer))) { _menu.Items[0].Visibility = Visibility.Visible; _menu.Items[1].Visibility = Visibility.Collapsed; } else { _menu.Items[0].Visibility = Visibility.Collapsed; _menu.Items[1].Visibility = Visibility.Visible; _currentWin = p_win; } _ = _menu.OpenContextMenu(default, p_elem);
static void ShowMenu(Point p_pos) { if (_menu == null) { _menu = new Menu { IsContextMenu = true }; var item = new Mi { ID = "取消自启动" }; item.Click += (s, a) => Startup.DelAutoStart(); _menu.Items.Add(item); item = new Mi { ID = "设置自启动" }; item.Click += SetAutoStart; _menu.Items.Add(item); item = new Mi { ID = "恢复窗口默认布局" }; item.Click += ResetWinLayout; _menu.Items.Add(item); item = new Mi { ID = "关闭其他" }; item.Click += CloseOtherWin; _menu.Items.Add(item); item = new Mi { ID = "停靠在左侧" }; item.Click += DockLeft; _menu.Items.Add(item); item = new Mi { ID = "停靠在右侧" }; item.Click += DockRight; _menu.Items.Add(item); } var autoStart = AtState.GetAutoStart(); Win win = _currentItem._win; if (autoStart != null && win != null && autoStart.WinType == win.GetType().AssemblyQualifiedName && (win.Params == null || autoStart.Params == JsonSerializer.Serialize(win.Params, JsonOptions.UnsafeSerializer))) { _menu.Items[0].Visibility = Visibility.Visible; _menu.Items[1].Visibility = Visibility.Collapsed; } else { _menu.Items[0].Visibility = Visibility.Collapsed; _menu.Items[1].Visibility = Visibility.Visible; } if (win != null) { if (win.AllowResetLayout) { _menu.Items[2].Visibility = Visibility.Visible; } else { // 主区内容为Win Tabs tabs = (Tabs)win.GetValue(Win.MainTabsProperty); if (tabs != null && tabs.Items.Count > 0 && tabs.Items[0].Content is Win cw && cw.AllowResetLayout) { _menu.Items[2].Visibility = Visibility.Visible; } else { _menu.Items[2].Visibility = Visibility.Collapsed; } }
/// <summary> /// 加载Windows模式桌面 /// </summary> static void LoadDesktop() { Desktop desktop = new Desktop(); // 主页 if (_homePageType != null) { Win win = Activator.CreateInstance(_homePageType) as Win; if (win != null) { if (string.IsNullOrEmpty(win.Title)) { win.Title = "主页"; } win.Icon = Icons.主页; desktop.HomeWin = win; } } // 自启动 AutoStartInfo autoStart; if (!string.IsNullOrEmpty(_launchArgs)) { // 带启动参数的自启动 LaunchFreely(_launchArgs); _launchArgs = null; } else if ((autoStart = AtState.GetAutoStart()) != null) { // 用户设置的自启动 bool suc = false; Type type = Type.GetType(autoStart.WinType); if (type != null) { try { Win win = null; if (string.IsNullOrEmpty(autoStart.Params)) { win = (Win)Activator.CreateInstance(type); } else { var par = JsonSerializer.Deserialize(autoStart.Params, Type.GetType(autoStart.ParamsType)); win = (Win)Activator.CreateInstance(type, par); } if (win != null) { win.Title = string.IsNullOrEmpty(autoStart.Title) ? "自启动" : autoStart.Title; Icons icon; if (Enum.TryParse(autoStart.Icon, out icon)) { win.Icon = icon; } desktop.ShowNewWin(win); suc = true; } } catch { } } if (!suc) { AtState.DelAutoStart(); } } if (desktop.MainWin == null) { desktop.MainWin = desktop.HomeWin; } SysVisual.RootContent = desktop; }