如何绑定到已绑定的依赖项属性? (绑定链)

时间:2011-10-25 20:55:37

标签: c# wpf visual-studio-2010 xaml binding

我有3个元素:

  • My MainWindow
  • 包含UserControlB的UserControlA
  • UserControlA包含的UserControlB

我的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}" />

在UserControl上使用相对DataContext:

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

然后是UserControlA。如果我使用UserControlB并设置Source属性direclty,一切正常。 但是,我的UserControlA还有一个Dependency Property,用于设置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}" />

还有UserControl上的相对DataContext:

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

现在在我的MainWindow中,我的UserControlA必须显示我的UserControlB:

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

问题:它不起作用。

我试图将一个简单的图像绑定到UserControlA中的Source:它可以工作。 我尝试在UserControlA中手动设置UserControlB的源:它可以工作。 我试图告诉UserControlA在属性发生变化时通知:

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

它不起作用。

所以,我不知道下一步该做什么。

0 个答案:

没有答案