views:

25

answers:

1

Hi, 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!

A: 

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).

Goblin