我正在将项目从Silverlight转移到WPF,我遇到了一个问题。
我有一个带有GeoRect类型的INotifyPropertyChanged属性GeoRect的控件。 GeoRect具有各种公共属性,这些属性在其构造函数中设置为IGeoPosition类型。
我正在设置对这些属性之一的绑定,如下所示:
<TextBlock Text="{Binding GeoRect.TopRight, ElementName=x_SomeControl}"></TextBlock>
在Silverlight中,每次GeoRect属性更改时,都会在IGeoPosition实例上调用默认的ToString方法。在Wpf我根本没有任何文字。
我可以在Wpf中通过向TextBlock添加ValueConverter来解决这个问题,TextBlock只是在对象上调用ToString方法,但这似乎是不必要的。有人可以帮忙吗?
答案 0 :(得分:1)
我怀疑你的绑定还有另一个问题。同样在WPF中,数据绑定调用ToString()方法来构建文本控件的文本 您是否检查过visual studio的输出窗口是否存在绑定错误?或者GeoRect类可能不支持TopRight属性的INotifyPropertyChanged?
答案 1 :(得分:0)
我猜ElementName=x_SomeControl
和GeoRect.TopRight
导致可能的“来源和路径”排名错误。您确定x_SomeControl
有一个名为'GeoRect'的属性吗? x_SomeControl.GeoRect
也不是空的吗? x_SomeControl.GeoRect.TopRight
有正确的价值吗?
正如HCL指出的那样,当您查看“输出”窗口时,这将显而易见,此窗口必须出现BindingExpression错误。
请检查。