如何在Wpf中设置默认绑定转换器?

时间:2011-09-14 08:04:24

标签: wpf binding

我正在将项目从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方法,但这似乎是不必要的。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我怀疑你的绑定还有另一个问题。同样在WPF中,数据绑定调用ToString()方法来构建文本控件的文本 您是否检查过visual studio的输出窗口是否存在绑定错误?或者GeoRect类可能不支持TopRight属性的INotifyPropertyChanged?

答案 1 :(得分:0)

我猜ElementName=x_SomeControlGeoRect.TopRight导致可能的“来源和路径”排名错误。您确定x_SomeControl有一个名为'GeoRect'的属性吗? x_SomeControl.GeoRect也不是空的吗? x_SomeControl.GeoRect.TopRight有正确的价值吗?

正如HCL指出的那样,当您查看“输出”窗口时,这将显而易见,此窗口必须出现BindingExpression错误。

请检查。