示例#1
0
        private static DocumentNode GetTemplateNode(SceneNode newElement, DocumentCompositeNode styleNode, out StyleNode styleElement)
        {
            DocumentCompositeNode documentCompositeNode1 = styleNode.Properties[DictionaryEntryNode.ValueProperty] as DocumentCompositeNode;
            SceneViewModel        viewModel = newElement.ViewModel.GetViewModel(documentCompositeNode1.DocumentRoot, false);

            if (viewModel == null)
            {
                styleElement = (StyleNode)null;
                return((DocumentNode)null);
            }
            styleElement = viewModel.GetSceneNode((DocumentNode)documentCompositeNode1) as StyleNode;
            DependencyPropertyReferenceStep propertyReferenceStep = (DependencyPropertyReferenceStep)newElement.ViewModel.ProjectContext.ResolveProperty(ControlElement.TemplateProperty);

            if (documentCompositeNode1 != null)
            {
                DocumentCompositeNode documentCompositeNode2 = documentCompositeNode1.Properties[StyleNode.SettersProperty] as DocumentCompositeNode;
                if (documentCompositeNode2 != null)
                {
                    foreach (DocumentNode documentNode1 in (IEnumerable <DocumentNode>)documentCompositeNode2.Children)
                    {
                        DocumentCompositeNode documentCompositeNode3 = documentNode1 as DocumentCompositeNode;
                        if (documentCompositeNode3 != null)
                        {
                            IMemberId    memberId      = (IMemberId)DocumentPrimitiveNode.GetValueAsMember(documentCompositeNode3.Properties[SetterSceneNode.PropertyProperty]);
                            DocumentNode documentNode2 = documentCompositeNode3.Properties[SetterSceneNode.ValueProperty];
                            if (memberId != null && documentNode2 != null && propertyReferenceStep.Equals((object)memberId))
                            {
                                return(documentNode2);
                            }
                        }
                    }
                }
            }
            return((DocumentNode)null);
        }