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# 为什么WPF绑定不调用PropertyMetadata中定义的propertyChangedCallback,而代码隐藏中的setter调用?_C#_Wpf_Data Binding_Dependency Properties - Fatal编程技术网

C# 为什么WPF绑定不调用PropertyMetadata中定义的propertyChangedCallback,而代码隐藏中的setter调用?

C# 为什么WPF绑定不调用PropertyMetadata中定义的propertyChangedCallback,而代码隐藏中的setter调用?,c#,wpf,data-binding,dependency-properties,C#,Wpf,Data Binding,Dependency Properties,我制作了一个用户控件,并在其中定义了一个依赖属性,如下所示: 公共静态只读 DependencyProperty源属性= 从属属性。寄存器( “来源”, 类型(可观测采集), 类型(单线图), 新属性元数据( 默认值(ObservableCollection), 线性影响的属性(已更改); 我也有一个普通属性,它包装了上面的一个。在其setter中,我只调用SetValue(SourceProperty,value)方法 当我从代码隐藏文件中设置这个源代码时,调用并执行lineAffected

我制作了一个用户控件,并在其中定义了一个依赖属性,如下所示:

公共静态只读
DependencyProperty源属性=
从属属性。寄存器(
“来源”,
类型(可观测采集),
类型(单线图),
新属性元数据(
默认值(ObservableCollection),
线性影响的属性(已更改);
我也有一个普通属性,它包装了上面的一个。在其setter中,我只调用
SetValue(SourceProperty,value)方法

当我从代码隐藏文件中设置这个
源代码时,调用并执行
lineAffectedPropertyChanged
,一切正常;但当我使用简单的数据绑定时,什么都不会发生


我错过了什么?

我知道已经很晚了。 我猜绑定属性的泛型类型不是object类型。
.Net无法在
ObservableCollection
ObservableCollection
的类型之间进行转换。最好在没有泛型参数的情况下创建IEnumerabe/ICollection或IList类型的DependencyProperty。

是否有任何绑定错误?也许杰霍夫不同意最佳拟合历史的道路。可能是装订有问题。bestFitnessHistory位于哪里?根据你的命名风格,我怀疑它是内部视图。但您的绑定要求此集合位于绑定的DataContext中。另一句话:通常,将默认值与集合相关属性一起使用是不好的做法:如果这样做,则类的所有对象都将使用相同的集合对象作为默认值,基本上共享相同的项。但这可能与你的问题无关。不!没有绑定错误,我在父节点设置了正确的datacontext,什么是bestFitnessHistory?它是一个字段/属性吗?您是否会通知单线图,无论何时您以某种方式创建/修改/填充此属性/字段?或者它是一个依赖属性?我认为这里的问题是,您不在datacontext的构造函数中分配/创建bestFitnessHistory,但有时稍后(如果它是CLR属性)您需要告诉视图它已更改。