Example #1
0
        //菜单点击事件
        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);
            }
        }
Example #2
0
        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;
            }
        }