设置数据上下文依赖项属性

问题描述

| 我正在尝试使用以下代码设置控件的datacontext:
public object GlobalContext
{
    set { this.SetValue(global.DataContext as DependencyProperty,value);  }
}
全局是控件,在此情况下是堆栈面板。 当我将鼠标悬停在ѭ1上时,它表示其依赖项属性,因此我认为它应该可以工作,但是出现以下错误:   无法在类型为'ResourceModuleAccessView \'的\'GlobalContext \'属性上设置\'Binding \'。只能在DependencyObject的DependencyProperty上设置\'Binding \'。 有什么办法可以使我工作? 编辑1: 在用户控件中,我具有:
 <StackPanel x:Name=\"global\" Orientation=\"Horizontal\">
在我想重用控件的地方:
    <my:ResourceModuleAccessView  

        ControlName=\"Usage Monitoring\"
        GlobalContext=\"{Binding Path=moduleAccess.GlobalAccess[ResourceModule.UsageMonitoring]}\"          
          GroupContext=\"{Binding Path=moduleAccess.Items[ResourceModule.UsageMonitoring]}\" />
    

解决方法

如果要将GlobalContext类用作绑定目标或使用SetValue方法,则必须从DependencyObject中继承它。另外,您应该将静态数据上下文* Property *从ѭ4传递给setValue,这就是实际的dependecy属性对象,您要两次传递datacontext对象。换句话说,呼叫应该是
SetValue(FrameworkElement.DataContextProperty,value);
我怀疑除了此代码还有其他问题,您可以发布您的xaml吗? -编辑- 感谢您添加代码,因为您要绑定到类(您的类是绑定目标,而不是绑定源),因此必须将其设为DependecyObject,并将“ 6”设为DependecyProperty。 另请注意,当绑定系统设置Dependecy属性时,它不使用常规的clr属性,而是直接使用DependencyProperty对象。这意味着,如果要在属性更改时注册回叫,则必须在创建DependecyProperty时在对Register的调用中执行此操作     ,在ѭ4上定义的DataContext属性是依赖项属性,即,它是WPF依赖项属性框架“支持”的属性。但是,此属性的类型为
object
。它是依赖项属性的事实告诉您它的存储方式,而不是其中存储的数据类型。