//菜单点击事件 private void Menu_Click(object sender, RoutedEventArgs e) { try { MainMenuModel main = (sender as RadButton).Tag as MainMenuModel; if (main.ClassName != "") { string assemblyName = main.Assembly; //所属程序集 string className = main.ClassName; //类名 Assembly ass = Assembly.Load(assemblyName); Type pageType = ass.GetType(className); if (_openPageName.Any(s => s == pageType.Name)) { //如果已经存在,则不需要新建,直接激活 int pageIndex = _openPageName.IndexOf(pageType.Name); mainView.MaximizedItem = mainView.Items[pageIndex]; } else { Frame f = new Frame(); f.NavigationUIVisibility = System.Windows.Navigation.NavigationUIVisibility.Hidden; BusinessBasePage businessPage = (BusinessBasePage)Activator.CreateInstance(pageType); f.Name = pageType.Name; f.Content = businessPage.Title; f.Navigate(businessPage); RadTileViewItem rtvi = new RadTileViewItem(); rtvi.SizeChanged += rtvi_SizeChanged; rtvi.Name = pageType.Name; TileItemTitle tit = new TileItemTitle(); tit.name = businessPage.Title; tit.Fontsize = 18; rtvi.DataContext = tit; rtvi.Content = f; mainView.Items.Add(rtvi); mainView.MaximizedItem = mainView.Items[mainView.Items.Count - 1]; _openPageName.Add(pageType.Name); //只有超过一个界面打开的情况下才需要分两列显示 if (_openPageName.Count > 1) { mainView.ColumnsCount = 2; } else { mainView.ColumnsCount = 1; } } } } catch (Exception ex) { DialogManager.ShowMessageAsync(Application.Current.MainWindow as MetroWindow, UIResources.MsgInfo, ex.ToString(), MessageDialogStyle.Affirmative, null); } }
void rtvi_SizeChanged(object sender, SizeChangedEventArgs e) { RadTileViewItem rtvi = sender as RadTileViewItem; TileItemTitle tit = rtvi.DataContext as TileItemTitle; if (rtvi.ActualWidth <= 100) { tit.Fontsize = 8; (rtvi.Content as Frame).IsEnabled = false; } else { tit.Fontsize = 18; (rtvi.Content as Frame).IsEnabled = true; } }