C# wpf中关于binding的converter无效的情况

时间:2021-02-17 14:54:08

最近碰到bingding设置了convert转换无效的问题。困扰了我好久。这里记录分析一下。

先说下现象

我把TextBox的text属性  绑定到了对应的 convert.代码如下

C# wpf中关于binding的converter无效的情况

希望吧pd_no转义成产品名称

断点跟进显示转换器有效且转换成功了,但界面却没有显示对应的 pd_no转换后的 产品名称。

同样的绑定。在datagrid中的cloumn中,却成功的转换成产品名称了

C# wpf中关于binding的converter无效的情况

想了半天没想明白。

注意到 DictConverter的convert函数,返回值类型是StringBuilder。恍然大悟。convert函数的返回类型是object 你可以给她返回任意对象。但是TextBox的Text属性是string类型。

你给她返回一个StringBuilder,她似乎不知道咋显示了。(这里应该StringBuilder和string没有啥亲戚关系。系统没有默认的转换,自己推断,如有问题请指教)。于是加一个

retrun aaa.toString();

OK ,显示成功。object类型的返回值,你返回啥她都吃了,但吃了对应的界面控件中的属性,不是所有类型都能消化0.0.这里好好好想明白。

感觉c#的Object类型,是一个很灵活也有很容易忽略问题的东西。是一把双刃剑。但必须得好好掌握!

C# wpf中关于binding的converter无效的情况