Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Dependencyproperty绑定为Datacontext_C#_Dependency Properties_Datacontext - Fatal编程技术网

C# 将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

我正在构建一个具有Dependencyproperty的自定义控件。我希望dependencyproperty是控件中容器的datacontext。但是,当我使用控件创建视图并绑定属性时,它不起作用。 代码示例:

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中出错,这就是为什么我第一次尝试使用您的答案时它不起作用的原因。非常感谢!!!!