C# 将Dependencyproperty绑定为Datacontext
我正在构建一个具有Dependencyproperty的自定义控件。我希望dependencyproperty是控件中容器的datacontext。但是,当我使用控件创建视图并绑定属性时,它不起作用。 代码示例:C# 将Dependencyproperty绑定为Datacontext,c#,dependency-properties,datacontext,C#,Dependency Properties,Datacontext,我正在构建一个具有Dependencyproperty的自定义控件。我希望dependencyproperty是控件中容器的datacontext。但是,当我使用控件创建视图并绑定属性时,它不起作用。 代码示例: public partial class MyControl : UserControl { public static readonly DependencyProperty MyItemsProperty = DependencyProperty.Reg
public partial class MyControl : UserControl
{
public static readonly DependencyProperty MyItemsProperty =
DependencyProperty.Register("MyItems", typeof (ObservableCollection <object>), typeof (MyControl),
new PropertyMetadata (new ObservableCollection <object>()));
public ObservableCollection <object> MyItems
{
get { return (ObservableCollection <object> GetValue (MyItemsProperty); }
set { SetValue (MyItemsProperty, value); }
}
public MyControl()
{
InitializeComponent();
ControlItemHost.DataContext = MyItems;
}
}
公共部分类MyControl:UserControl
{
公共静态只读从属属性MyItemsProperty=
DependencyProperty.Register(“MyItems”)、typeof(ObservableCollection)、typeof(MyControl),
新的PropertyMetadata(新的ObservableCollection());
公共可观测集合MyItems
{
获取{return(ObservableCollection GetValue(MyItemsProperty);}
set{SetValue(MyItemsProperty,value);}
}
公共MyControl()
{
初始化组件();
ControlItemHost.DataContext=MyItems;
}
}
在控件的xaml中,我有一个用于项目的容器(ControlItemHost)
生成主视图并初始化属性时:
MyItems=“{Binding ListOfItems}”
我看不到这些项,但是如果我添加MyControl项,我会看到它们。
如何修复此问题,以便可以从控制之外绑定
(属性必须是datacontext)您只为datacontext属性指定一个常量值,而不是建立绑定。请尝试以下操作:
ControlItemHost.SetBinding(FrameworkElement.DataContextProperty, new Binding("MyItems") { Source = this });
我在MyControl的构造函数中写到了这一点,但当我从视图绑定MyItems时,它仍然不起作用。我在视图构造函数中向属性添加了一个绑定,它与您的代码一起工作!我可能在xaml中出错,这就是为什么我第一次尝试使用您的答案时它不起作用的原因。非常感谢!!!!