I have 2 controls A and B that need to share a dependency property.
A has the property defined as:
public static readonly DependencyProperty PathProperty= DependencyProperty.Register(“PathProperty”, typeof(string), typeof(A),
new PropertyMetadata(string.Empty, OnPathChanged));
public string Path
{
get { return (string)GetValue(PathProperty); }
private set { SetValue(PathProperty, value); }
}
private static void OnPathChanged(DependencyObject dobj, DependencyPropertyChangedEventArgs args)
{
//Dos something
}
Inside of class B,
I have
public static readonly DependencyProperty Path = A.PathProperty.AddOwner(typeof(B));
public string Path
{
get { return (string)GetValue(Path); }
set { SetValue(Path, value); }
}
Now, if I set the Dependency property Path on B explictly…(from code like Binstance.Path = “value” )
I would expect the OnPathChangedmethod to fire inside of A control?
Isnt that the expected behavior or am I missing something? How do I get this to work? … i.e changing path property on B should fire OnPAthChanged on A
Thanks!
I think you’ve misunderstood the concept of DependencyProperties… Two separate controls do not receive updates of each other’s events – nor does two Dependency-derived objects receive notifications of other objects’ changes (E.g. if you have two textboxes – changing one’s TextProperty, does nothing to the other). If you really want your second Control type to fire the static validation-callback – you need to make it public and call it in your registration of the DependencyProperty on class B. I wouldn’t recommend it though – it gives you very tight coupling between the two classes that otherwise have nothing in common (as I understand your example).