我制作了一个用户控件,并在其中定义了一个依赖属性,如下所示:
public static readonly
DependencyProperty SourceProperty =
DependencyProperty.Register(
"Source",
typeof( ObservableCollection<object> ),
typeof( SingleLineChart ),
new PropertyMetadata(
default( ObservableCollection<object> ),
lineAffectedPropertyChanged ) );
我还有一个普通的属性,把上面的包裹起来。在它的 setter 中,我只是调用 SetValue( SourceProperty, value );
方法。
当我从代码隐藏文件设置此 Source
时,lineAffectedPropertyChanged
被调用并执行,一切正常;但是当我使用简单的数据绑定(bind)时,什么也没有发生。
<Line:SingleLineChart
Name="bestFitnessDisplayer"
Source="{Binding Path=bestFitnessHistory}"
Margin="20"/>
我错过了什么?
最佳答案
我知道已经晚了。
我想绑定(bind)属性的泛型类型不是对象类型。
.Net 无法在 ObservableCollection<object>
的类型之间进行转换和 ObservableCollection<Something>
.最好创建不带泛型参数的 IEnumerabe/ICollection 或 IList 类型的 DependencyProperty。
关于c# - 为什么 WPF Binding 不调用 PropertyMetadata 中定义的 propertyChangedCallback,而代码隐藏中的 setter 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909173/