【发布时间】:2009-10-14 14:06:40
【问题描述】:
我有一个带有 DependencyProperty 的 UserControl。我使用数据绑定表达式在主机窗口中设置它的值。但是,它并没有按预期工作。
来自用户控件代码隐藏的片段:
public class ViewBase : UserControl
{
public static readonly DependencyProperty ViewModelProperty
= DependencyProperty.Register(
"ViewModel", typeof(ViewModelBase), typeof(ViewBase));
public ViewModelBase ViewModel
{
get { return GetValue(ViewModelProperty) as ViewModelBase; }
set
{
SetValue(ViewModelProperty, value);
}
}
}
并且来自 XAML(注意:CasingListView 继承自 ViewBase):
<CasingEditor:CasingListView x:Name="_casingListView"
ViewModel="{Binding CasingListViewModel}" />
发生的一切都不算什么。具体来说,setter 永远不会被调用,并且该属性保持为空。我知道源属性CasingListViewModel 有一个值,因为我尝试将它绑定到另一个属性(DataContext),它工作正常。
我认为依赖属性可以是数据绑定的。我错了吗?
【问题讨论】:
-
出于兴趣,为什么不绑定到DataContext?
-
好问题!实际上,我们可能可以。但是已经有一些代码需要设置 ViewModel 属性。此外,我们在其他用户控件中的其他属性也遇到了同样的问题,并且想了解如何使其工作。
-
CasingListViewModel 如何/在哪里声明?它是 Window 的资源还是属性?
标签: wpf data-binding dependency-properties