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

如何在Wpf中设置默认绑定转换器?,wpf,binding,Wpf,Binding,我正在将项目从Silverlight转移到WPF,我遇到了一个问题 我有一个控件,其INotifyPropertyChanged属性为GeoRect类型。GeoRect具有各种公共属性,这些属性在其构造函数中设置为IGEOPOSION类型 我正在将绑定设置为以下属性之一: <TextBlock Text="{Binding GeoRect.TopRight, ElementName=x_SomeControl}"></TextBlock> 在Silverlight

我正在将项目从Silverlight转移到WPF,我遇到了一个问题

我有一个控件,其INotifyPropertyChanged属性为GeoRect类型。GeoRect具有各种公共属性,这些属性在其构造函数中设置为IGEOPOSION类型

我正在将绑定设置为以下属性之一:

 <TextBlock Text="{Binding GeoRect.TopRight, ElementName=x_SomeControl}"></TextBlock>

在Silverlight中,每次更改Georgect属性时,都会对IGeoPosition实例调用默认的ToString方法。在Wpf中,我根本没有收到任何文本


在Wpf中,我可以通过向TextBlock添加一个ValueConverter来纠正这一点,TextBlock只调用对象上的ToString方法,但这似乎是不必要的。有人能帮忙吗?

我怀疑您的绑定中还有另一个问题。同样在WPF中,数据绑定调用ToString()方法来构建文本控件的文本。

是否检查了visual studio的输出窗口中的绑定错误?或者Georgect类不支持TopRight属性的INotifyPropertyChanged?

我猜
ElementName=x_SomeControl
Georgect.TopRight
可能会导致“源和路径”合并错误。你确定你的
x_SomeControl
有一个名为“GeoRect”的属性吗?
x\u SomeControl.GeoRect
是否也不为空?和
x\u SomeControl.GeoRect.TopRight
的值是否正确

正如HCL所指出的,当您查看输出窗口时,这一点会变得很明显,其中BindingExpression错误一定是针对该绑定出现的


请检查。

谢谢您的回复。输出窗口是我第一次调用,但运气不好。我确信GeoRect不是空的,因为如果我向绑定中添加一个值转换器,我可以“窥探”并看到它不是空的。的确,在ValueConverter中调用ToString会起作用。感谢您的回复。我认为WPF应该这样做。TopRight属性的支持字段仅在构造函数中设置。如果我将属性更改为returnastring(并在backingfield对象上返回ToString方法),那么就得到了正确的结果。这似乎是界面处理方式的问题。神秘!