public override PropertyTreeMetaObject Process(PropertyTreeBinderImpl parent, PropertyTreeMetaObject target, PropertyTreeNavigator self, NodeList children) { Predicate <PropertyTreeNavigator> predicate = ImplicitDirective(target, "base"); var node = children.FindAndRemove(predicate).FirstOrDefault(); Uri baseUri; IServiceProvider serviceProvider; if (node == null) { baseUri = self.BaseUri; serviceProvider = parent; } else { baseUri = Utility.NewUri(Convert.ToString(node.Value)); serviceProvider = parent.GetBasicServices(node); } return(target.BindBaseUri(baseUri, serviceProvider)); }