我正在使用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)
答案 0 :(得分:1)
您只是为DataContext属性分配一个常量值,而不是建立绑定。请尝试以下方法:
ControlItemHost.SetBinding(FrameworkElement.DataContextProperty, new Binding("MyItems") { Source = this });