private void AddMetadataObjects(List <MetadataNodeViewModel> root, IMetadataService service) { InfoBase metadata = service.GetSystemInfoBase(); MetadataNode metadataNode = new MetadataNode(metadata); metadataNode.Children = new List <MetadataNode>(); MetadataNodeViewModel metadataVM = new MetadataNodeViewModel(null, metadataNode); metadataVM.Children = new ObservableCollection <MetadataNodeViewModel>(); foreach (Namespace ns in metadata.Namespaces) { MetadataNode child = new MetadataNode(ns); child.Children = new List <MetadataNode>(); metadataNode.Children.Add(child); MetadataNodeViewModel childVM = new MetadataNodeViewModel(metadataVM, child); childVM.Children = new ObservableCollection <MetadataNodeViewModel>(); metadataVM.Children.Add(childVM); foreach (Entity entity in ns.Entities) { MetadataNode grandchild = new MetadataNode(entity); child.Children.Add(grandchild); MetadataNodeViewModel grandchildVM = new MetadataNodeViewModel(childVM, grandchild); childVM.Children.Add(grandchildVM); } } root.Add(metadataVM); }
private void OnTypeSelected(object selectedType) { if (selectedType == null) { return; } MetadataNodeViewModel vm = selectedType as MetadataNodeViewModel; if (vm == null) { return; } MetadataNode model = vm.Model; if (model == null) { return; } Entity entity = model.Metadata as Entity; if (entity == null) { return; } this.Type = entity; this.Value = null; this.SetupValueView(); this.OnPropertyChanged("IsClearButtonVisible"); this.OnPropertyChanged("IsReferenceObjectSelectionEnabled"); }
private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { MetadataNodeViewModel viewModel = this.DataContext as MetadataNodeViewModel; if (viewModel == null) { return; } viewModel.SelectedNode = (MetadataNodeViewModel)e.NewValue; }
protected override void InitializeViewModel() { IMetadataService metadata = new MetadataService(); List <MetadataNodeViewModel> items = new List <MetadataNodeViewModel>(); AddMetadataObjects(items, metadata); InfoBase system = new InfoBase(); system.Name = "Primitive types"; MetadataNode systemNode = new MetadataNode(system); systemNode.Children = new List <MetadataNode>(); MetadataNodeViewModel systemVM = new MetadataNodeViewModel(null, systemNode); systemVM.Children = new ObservableCollection <MetadataNodeViewModel>(); items.Add(systemVM); MetadataNode systemType = new MetadataNode(Entity.Int32); systemNode.Children.Add(systemType); systemVM.Children.Add(new MetadataNodeViewModel(systemVM, systemType)); systemType = new MetadataNode(Entity.String); systemNode.Children.Add(systemType); systemVM.Children.Add(new MetadataNodeViewModel(systemVM, systemType)); systemType = new MetadataNode(Entity.Decimal); systemNode.Children.Add(systemType); systemVM.Children.Add(new MetadataNodeViewModel(systemVM, systemType)); systemType = new MetadataNode(Entity.Boolean); systemNode.Children.Add(systemType); systemVM.Children.Add(new MetadataNodeViewModel(systemVM, systemType)); systemType = new MetadataNode(Entity.DateTime); systemNode.Children.Add(systemType); systemVM.Children.Add(new MetadataNodeViewModel(systemVM, systemType)); foreach (InfoBase ib in metadata.GetInfoBases()) { MetadataNode node = new MetadataNode(ib); node.Children = new List <MetadataNode>(); MetadataNodeViewModel parentVM = new MetadataNodeViewModel(null, node); parentVM.Children = new ObservableCollection <MetadataNodeViewModel>(); foreach (Namespace ns in ib.Namespaces) { if (ns.Name == "Справочник" || ns.Name == "Документ") { MetadataNode child = new MetadataNode(ns); child.Children = new List <MetadataNode>(); node.Children.Add(child); MetadataNodeViewModel childVM = new MetadataNodeViewModel(parentVM, child); childVM.Children = new ObservableCollection <MetadataNodeViewModel>(); parentVM.Children.Add(childVM); foreach (Entity entity in ns.Entities) { MetadataNode grandchild = new MetadataNode(entity); child.Children.Add(grandchild); MetadataNodeViewModel grandchildVM = new MetadataNodeViewModel(childVM, grandchild); childVM.Children.Add(grandchildVM); } } } items.Add(parentVM); } _ViewModel = new MetadataNodeViewModel(); _ViewModel.Children = new ObservableCollection <MetadataNodeViewModel>(items); this.View = new MetadataNodeView(_ViewModel); }
} // used to create root node public MetadataNodeViewModel(MetadataNodeViewModel parent, MetadataNode model) : base() { this.Model = model; this.Parent = parent; }
public MetadataNodeView(MetadataNodeViewModel viewModel) : this() { this.DataContext = viewModel; }