Как привязать к уже привязанному свойству зависимости?(Связывающая цепь) - PullRequest
1 голос
/ 26 октября 2011

У меня есть 3 элемента:

  • My MainWindow
  • UserControlA, содержащий UserControlB
  • UserControlB, содержащийся в UserControlA

Мой UserControlB - этовыполняет работу над изображением и имеет объявленный объект DependencyProperty:

    public ImageSource Source
    {
        set { SetValue(SourceProperty, value); }
        get { return GetValue(SourceProperty) as ImageSource; }
    }
    public static DependencyProperty SourceProperty = DependencyProperty.Register("Source", typeof(ImageSource), typeof(UserControlB));

И изображение, над которым работа в UserControlB связано с этой зависимостью:

<Image Source="{Binding Path=Source}" />

При относительном DataContext наUserControl:

DataContext="{Binding RelativeSource={RelativeSource Self}}"

Затем идет UserControlA.Если я использую UserControlB и устанавливаю свойство Source direclty, все работает нормально.Но у моего UserControlA также есть Свойство Зависимости, которое устанавливает ImageSource:

    public ImageSource Source
    {
        get { return GetValue(SourceProperty) as ImageSource; }
        set { SetValue(SourceProperty, value); }
    }
    public static readonly DependencyProperty SourceProperty =
        DependencyProperty.Register("Source", typeof(ImageSource), typeof(UserControlA));

И оно также связано таким же образом:

<my:UserControlB Source="{Binding Path=Source}" />

С также относительным DataContext в UserControl:

DataContext="{Binding RelativeSource={RelativeSource Self}}"

А теперь в моем MainWindow есть мой UserControlA, который должен отображать мой UserControlB:

<my:UserControlA Source="/Project;component/Images/090607153529_49.jpg" />

Проблема: она не работает.

Я попытался поместить простое изображение, привязанное к Source, в UserControlA: оно работает.Я попытался установить источник UserControlB вручную в UserControlA: он работает.Я пытался сказать UserControlA, чтобы он уведомлял об изменении свойства:

Source="{Binding Path=Source, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"

оно не работает.

Итак, я не знаю, что делать дальше.

...