将Dependencyproperty绑定为Datacontext

时间:2014-02-02 14:25:35

标签: c# dependency-properties datacontext

我正在使用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;
    }
}

在我控制的xaml中,我有一个容器(ControlItemHost)。

当我构建主视图并初始化属性时: MyItems =“{Binding ListOfItems}”

我没看到这些项目,但如果我添加MyControl项目,我会看到它们。 我如何解决这个问题,以便我可以从控件外部绑定?

(属性必须是datacontext)

1 个答案:

答案 0 :(得分:1)

您只是为DataContext属性分配一个常量值,而不是建立绑定。请尝试以下方法:

ControlItemHost.SetBinding(FrameworkElement.DataContextProperty, new Binding("MyItems") { Source = this });