private static object WarmUpPropertyCacheByITypeId(object arg) { PropertyCacheHelper.DispatchArguments arguments = (PropertyCacheHelper.DispatchArguments)arg; if (arguments.ViewModel.Document != null) { ITypeResolver typeResolver = (ITypeResolver)arguments.ViewModel.ProjectContext; IType type = typeResolver.ResolveType(arguments.TypeList[arguments.Index]); if (!typeResolver.PlatformMetadata.IsNullType((ITypeId)type)) { arguments.ViewModel.CreateSceneNode((ITypeId)type); } ++arguments.Index; if (arguments.Index < arguments.TypeList.Length) { if (PropertyCacheHelper.Synchronous) { PropertyCacheHelper.WarmUpPropertyCacheByITypeId((object)arguments); } else { UIThreadDispatcher.Instance.BeginInvoke <object>(DispatcherPriority.ApplicationIdle, (Func <object>)(() => PropertyCacheHelper.WarmUpPropertyCacheByITypeId((object)arguments))); } } } return((object)null); }
public static void PopulateDocumentSpecificPropertyCache(SceneViewModel viewModel) { PropertyCacheHelper.DispatchArguments arguments = new PropertyCacheHelper.DispatchArguments(); arguments.ViewModel = viewModel; if (viewModel.Document == null || DocumentContextHelper.GetDesignDataMode((IProject)viewModel.ProjectContext.GetService(typeof(IProject)), viewModel.Document.Path) != DesignDataMode.None) { return; } if (!viewModel.ProjectContext.IsCapabilitySet(PlatformCapability.IsWpf)) { if (PropertyCacheHelper.InitializedSl) { return; } PropertyCacheHelper.InitializedSl = true; arguments.TypeList = new ITypeId[17] { PlatformTypes.Rectangle, PlatformTypes.Ellipse, PlatformTypes.Path, PlatformTypes.Grid, PlatformTypes.Canvas, PlatformTypes.StackPanel, PlatformTypes.ScrollViewer, PlatformTypes.Border, PlatformTypes.TextBox, PlatformTypes.TextBlock, PlatformTypes.PasswordBox, PlatformTypes.Button, PlatformTypes.CheckBox, PlatformTypes.ListBox, PlatformTypes.RadioButton, PlatformTypes.Slider, PlatformTypes.ScrollBar }; } else { if (PropertyCacheHelper.InitializedWpf) { return; } PropertyCacheHelper.InitializedWpf = true; arguments.TypeList = new ITypeId[27] { PlatformTypes.Rectangle, PlatformTypes.Ellipse, PlatformTypes.Path, PlatformTypes.Grid, PlatformTypes.Canvas, PlatformTypes.StackPanel, ProjectNeutralTypes.WrapPanel, ProjectNeutralTypes.DockPanel, PlatformTypes.ScrollViewer, PlatformTypes.Border, ProjectNeutralTypes.Viewbox, PlatformTypes.TextBox, PlatformTypes.TextBlock, PlatformTypes.RichTextBox, PlatformTypes.PasswordBox, ProjectNeutralTypes.Label, PlatformTypes.FlowDocumentScrollViewer, PlatformTypes.Button, PlatformTypes.CheckBox, PlatformTypes.ComboBox, PlatformTypes.ListBox, PlatformTypes.RadioButton, PlatformTypes.Slider, ProjectNeutralTypes.TabControl, ProjectNeutralTypes.GridSplitter, PlatformTypes.ScrollBar, PlatformTypes.UniformGrid }; } if (PropertyCacheHelper.Synchronous) { PropertyCacheHelper.WarmUpPropertyCacheByITypeId((object)arguments); } else { UIThreadDispatcher.Instance.BeginInvoke <object>(DispatcherPriority.ApplicationIdle, (Func <object>)(() => PropertyCacheHelper.WarmUpPropertyCacheByITypeId((object)arguments))); } }