public static T LauchDemo <T>(DemoBrowserViewModel viewmodel, DemoInfo demoInfo) where T : DependencyObject { T demo; var constructorInfo = demoInfo.DemoViewType.GetConstructors().FirstOrDefault(cinfo => cinfo.IsPublic && cinfo.GetParameters().Length == 1 && cinfo.GetParameters()[0].Name == "themename"); if (demoInfo.ThemeMode != ThemeMode.None && constructorInfo != null) { demo = Activator.CreateInstance(demoInfo.DemoViewType, demoInfo.ThemeMode == ThemeMode.Inherit ? viewmodel.SelectedThemeName : DemoBrowserViewModel.DefaultThemeName) as T; } else { demo = Activator.CreateInstance(demoInfo.DemoViewType) as T; if (demoInfo.ThemeMode == ThemeMode.Inherit) { SfSkinManager.SetTheme(demo, new Theme() { ThemeName = viewmodel.SelectedThemeName }); } else if (demoInfo.ThemeMode == ThemeMode.Default) { SfSkinManager.SetTheme(demo, new Theme() { ThemeName = DemoBrowserViewModel.DefaultThemeName }); } } return(demo); }
/// <summary> /// Method helps to perform sample selection change operation. /// </summary> /// <param name="demoInfo">Selected Sample</param> private void OnSelectedSampleChanged(DemoInfo demoInfo) { if (demoInfo == null) { return; } if (demoInfo.ThemeMode != ThemeMode.Inherit) { IsThemeInheritMode = false; } else { IsThemeInheritMode = true; } if (demoInfo.ShowBusyIndicator) { IsProductDemoBusy = true; } var olddemo = DemosNavigationService.DemoNavigationService.Content as IDisposable; if (demoInfo.DemoLauchMode == DemoLauchMode.Window || (SelectedProduct != null && SelectedProduct.DemoLauchMode == DemoLauchMode.Window)) { var demoLauncherView = new DemoLauncherView(demoInfo.DemoViewType) { DataContext = this }; SfSkinManager.SetTheme(demoLauncherView, new Theme() { ThemeName = SelectedThemeName }); DemosNavigationService.DemoNavigationService.Navigate(demoLauncherView); } else { var demoControl = DemoLaucherExtension.LauchDemo <DemoControl>(this, demoInfo); if (demoControl != null && DemosNavigationService.DemoNavigationService != null) { demoControl.Title = demoInfo.SampleName; demoControl.Description = demoInfo.Description; DemosNavigationService.DemoNavigationService.Navigate(demoControl); } } if (olddemo != null) { olddemo.Dispose(); } DemosNavigationService.MainWindow.Dispatcher.BeginInvoke(new Action(() => { IsProductDemoBusy = false; }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); }
protected override void Invoke(object parameter) { if (this.AssociatedObject == null) { return; } var viewmodel = this.AssociatedObject.DataContext as DemoBrowserViewModel; if (viewmodel == null) { return; } if (AssociatedObject != null && AssociatedObject.SelectedItem is DemoInfo && viewmodel != null) { try { DemoInfo demo = AssociatedObject.SelectedItem as DemoInfo; if (demo.ShowBusyIndicator) { viewmodel.IsShowCaseDemoBusy = true; } var window = Activator.CreateInstance(demo.DemoViewType) as Window; viewmodel.SelectedShowcaseSample = demo; AssociatedObject.SelectedItem = null; DemosNavigationService.MainWindow.Dispatcher.BeginInvoke(new Action(() => { viewmodel.IsShowCaseDemoBusy = false; }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); if (window != null) { window.Owner = DemosNavigationService.MainWindow; window.WindowStartupLocation = WindowStartupLocation.CenterScreen; window.Closed += Window_Closed; window.ShowDialog(); } } catch (Exception exception) { viewmodel.IsShowCaseDemoBusy = false; if (viewmodel != null) { if (viewmodel.SelectedProduct != null && viewmodel.SelectedSample != null) { ErrorLogging.LogError("Product Sample\\" + viewmodel.SelectedProduct.Product + "\\" + viewmodel.SelectedSample.SampleName + "@@" + exception.Message + "\n" + exception.StackTrace + "\n" + exception.Source); } else if (viewmodel.SelectedShowcaseSample != null) { ErrorLogging.LogError("Product ShowCase\\" + viewmodel.SelectedShowcaseSample.SampleName + "\\" + viewmodel.SelectedShowcaseSample.SampleName + "@@" + exception.Message + "\n" + exception.StackTrace + "\n" + exception.Source); } } } } }
/// <summary> /// Helps to launch window mode demos. /// </summary> private async static void LaunchDemo(DemoInfo demo) { if (viewModel == null || viewModel.SelectedProduct == null || viewModel.SelectedSample == null) { return; } try { var window = DemoLaucherExtension.LauchDemo <Window>(viewModel, demo); window.Show(); if (demo.ShowBusyIndicator) { await DemosNavigationService.MainWindow.Dispatcher.BeginInvoke(new Action(() => { window.Close(); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); } else { await Task.Delay(6000); ErrorLogging.LogLiveDemos(viewModel.SelectedProduct.Product + "\\" + viewModel.SelectedSample.SampleName + "\\ShowBusyIndicator set as false. Ensure to set as true, if this demo is not running anything in background always."); window.Close(); } } catch (Exception exception) { if (viewModel != null) { if (viewModel.SelectedProduct != null && viewModel.SelectedSample != null) { ErrorLogging.LogError("Product Sample\\" + viewModel.SelectedProduct.Product + "\\" + viewModel.SelectedSample.SampleName + "@@" + "Assembly location details missing in app.config file, Please contact Syncfusion support." + exception.Message + "\n" + exception.StackTrace + "\n" + exception.Source); } else if (viewModel.SelectedShowcaseSample != null) { ErrorLogging.LogError("Product ShowCase\\" + viewModel.SelectedShowcaseSample.SampleName + "\\" + viewModel.SelectedShowcaseSample.SampleName + "@@" + "Assembly location details missing in app.config file, Please contact Syncfusion support." + exception.Message + "\n" + exception.StackTrace + "\n" + exception.Source); } } } }
/// <summary> /// Helps to launch window mode demos. /// </summary> private async static void LaunchDemo(DemoInfo demo) { var window = DemoLaucherExtension.LauchDemo <Window>(viewModel, demo); window.Show(); if (demo.ShowBusyIndicator) { await DemosNavigationService.MainWindow.Dispatcher.BeginInvoke(new Action(() => { window.Close(); }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); } else { await Task.Delay(4000); if (viewModel != null && viewModel.SelectedProduct != null && viewModel.SelectedSample != null) { ErrorLogging.LogLiveDemos(viewModel.SelectedProduct.Product + "\\" + viewModel.SelectedSample.SampleName + "\\Live Demos"); } window.Close(); } }
/// <summary> /// Occurs when the selection of show case demos /// </summary> private void ShowcaseList_SelectionChanged(object sender, SelectionChangedEventArgs e) { ListView listView = sender as ListView; if (listView != null && listView.SelectedItem is DemoInfo && sampleBrowserViewModel != null) { try { DemoInfo demo = listView.SelectedItem as DemoInfo; if (demo.ShowBusyIndicator) { sampleBrowserViewModel.IsShowCaseDemoBusy = true; } var window = Activator.CreateInstance(demo.DemoViewType) as Window; AssociatedObject.ShowcaseList.SelectedItem = null; DemosNavigationService.MainWindow.Dispatcher.BeginInvoke(new Action(() => { sampleBrowserViewModel.IsShowCaseDemoBusy = false; }), System.Windows.Threading.DispatcherPriority.ApplicationIdle); if (window != null) { window.Owner = DemosNavigationService.MainWindow; window.WindowStartupLocation = WindowStartupLocation.CenterScreen; window.Closed += Window_Closed; window.ShowDialog(); } } catch (Exception exception) { sampleBrowserViewModel.IsShowCaseDemoBusy = false; ErrorWindow.Show(exception.Message + "\n" + exception.StackTrace); } } }