【问题标题】:What is the DataContext of a DependencyObject in Silverlight4?Silverlight4 中 DependencyObject 的 DataContext 是什么?
【发布时间】:2010-07-05 15:22:39
【问题描述】:

我读到 SL4 引入了对派生自 DependencyObjects 的对象的属性进行数据绑定的能力,而以前数据绑定仅适用于 FrameworkElements 或 FrameworkContentElements。

但是,我不清楚在绑定DependencyObjects的属性时如何确定绑定源。

在 FrameworkElements 的情况下,元素的 DataContext 属性是源对象(如果没有直接设置 DataContext,则“向上走”以查找 DataContext)。

在 DependencyObjects 的情况下,我猜想使用的 DataContext 是 XAML 文件中“包含”FrameworkElement 的 DataContext。但是确定这个包含对象的机制是什么?

在我的特定情况下,我试图绑定位于 ObservableCollection 中的 DependencyObject 的属性,该 ObservableCollection 是 FrameworkElement 的属性。不幸的是,尝试在 DependencyObject 上绑定属性失败,因为数据绑定系统似乎将 DependencyObject 本身用作其自己的 DataContext。它抱怨(在输出窗口中)该类型没有具有在绑定表达式中指定的名称的属性。使用相同的绑定表达式在同一个 UserControl 中绑定一个 FrameworkElement 的依赖属性是成功的。

【问题讨论】:

    标签: silverlight data-binding silverlight-4.0 dependencyobject


    【解决方案1】:

    您是否尝试在定义 Binding 时声明 Source 或 ElementName 属性?

    (例如:{Binding Source={StaticResource theFrameworkElement} Path=theObservableCollection[0]}

    {Binding ElementName=theFrameworkElement Path=theObservableCollection[0]}

    【讨论】:

    • 那行得通。但是,在绑定设置为 StackPanel 的 RenderTransform 的 ScaleTransform 的比例时,我不需要这样做。我希望我知道这些情况有何不同。
    • 我设法使数据绑定适用于作为 FrameworkElement 属性的依赖对象 - FE 的属性必须是依赖属性。我还为 FE 持有的集合中的 DO 进行了绑定工作——该集合必须是 DependencyObjectCollection。我通过...重新阅读文档发现了这一点!:msdn.microsoft.com/en-us/library/cc278072(v=VS.95).aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2010-10-22
    • 1970-01-01
    • 2011-11-07
    • 2010-10-17
    • 2014-07-13
    相关资源
    最近更新 更多