diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/MarkupExtensions/DesignItemBinding.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/MarkupExtensions/DesignItemBinding.cs index 0e9751f076..1c8fa95518 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/MarkupExtensions/DesignItemBinding.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/MarkupExtensions/DesignItemBinding.cs @@ -63,23 +63,33 @@ namespace ICSharpCode.WpfDesign.Designer.MarkupExtensions return null; } + public void CreateBindingOnProperty(DependencyProperty targetProperty, FrameworkElement targetObject) + { + _targetProperty = targetProperty; + _targetObject = targetObject; + _targetObject.DataContextChanged += targetObject_DataContextChanged; + targetObject_DataContextChanged(_targetObject, new DependencyPropertyChangedEventArgs()); + } + void targetObject_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { var dcontext = ((FrameworkElement) sender).DataContext; - DesignContext context; - FrameworkElement fe; - DesignItem designItem; + DesignContext context = null; + FrameworkElement fe = null; + DesignItem designItem = null; if (dcontext is DesignItem) { designItem = (DesignItem)dcontext; context = designItem.Context; fe = designItem.View as FrameworkElement; - } else { + } else if (dcontext is FrameworkElement) { fe = ((FrameworkElement)dcontext); var srv = fe.TryFindParent<DesignSurface>(); - context = srv.DesignContext; - designItem = context.Services.Component.GetDesignItem(fe); + if (srv != null) { + context = srv.DesignContext; + designItem = context.Services.Component.GetDesignItem(fe); + } } if (context != null)