private void Tile_Click(object sender, RoutedEventArgs e) { Tile tile = (Tile)sender; WorkItem item = (WorkItem)tile.Tag; if (WindowList.ContainsKey(item)) { WindowList[item].Close += frame_Close; ContentControl.Content = WindowList[item]; return; } WorkFrame frame = new WorkFrame(); frame.MainTitle = item.Name; WorkPage content = item.GetWorkPage(); WindowList.Add(item, frame); MenuItem menu = new MenuItem(); menu.Tag = frame; menu.Click += Menu_Click; menu.SetBinding(MenuItem.HeaderProperty, new Binding { Source = frame, Mode = BindingMode.OneWay, Path = new PropertyPath("Content.Title") }); WindowMenu.Items.Add(menu); frame.Close += frame_Close; frame.Close += (s, ee) => { WindowList.Remove(item); WindowMenu.Items.Remove(menu); ContentControl.Content = StartMenu; }; ContentControl.Content = frame; frame.NavigationService.NavigateTo(content); }
public void SwitchFrame(WorkFrame frame) { if (window == null) throw new InvalidOperationException("未载入窗体。"); if (frame == null) throw new ArgumentNullException("frame"); window.SwitchFrame(frame); }
private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) { for (int i = 2; i < WindowMenu.Items.Count; i++) { MenuItem item = (MenuItem)WindowMenu.Items[i]; WorkFrame frame = (WorkFrame)item.Tag; frame.NavigationService.NavigateTo(null); } foreach (var button in BussinessApplication.Current.Buttons) { TitleButton.Items.Remove(button); } }
private static void OnContentChange(object sender, DependencyPropertyChangedEventArgs e) { WorkFrame frame = (WorkFrame)sender; if (e.OldValue != null) { ((WorkPage)e.OldValue).Frame = null; } if (e.NewValue != null) { ((WorkPage)e.NewValue).Frame = (WorkFrame)sender; if (frame.ContentControl != null) { frame.ContentControl.Content = e.NewValue; } } else { if (e.OldValue != null && frame.Close != null) { frame.Close(frame, null); } } }
public void SwitchFrame(WorkFrame frame) { frame.Close += frame_Close; ContentControl.Content = frame; }
internal NavigationService(WorkFrame frame) { Frame = frame; History = new Stack<WorkPage>(); }
public EditorItem(WorkFrame frame) { IsChanged = false; Initialized = false; Frame = frame; }