最近碰到bingding设置了convert转换无效的问题。困扰了我好久。这里记录分析一下。
先说下现象
我把TextBox的text属性 绑定到了对应的 convert.代码如下
希望吧pd_no转义成产品名称
断点跟进显示转换器有效且转换成功了,但界面却没有显示对应的 pd_no转换后的 产品名称。
同样的绑定。在datagrid中的cloumn中,却成功的转换成产品名称了
想了半天没想明白。
注意到 DictConverter的convert函数,返回值类型是StringBuilder。恍然大悟。convert函数的返回类型是object 你可以给她返回任意对象。但是TextBox的Text属性是string类型。
你给她返回一个StringBuilder,她似乎不知道咋显示了。(这里应该StringBuilder和string没有啥亲戚关系。系统没有默认的转换,自己推断,如有问题请指教)。于是加一个
retrun aaa.toString();
OK ,显示成功。object类型的返回值,你返回啥她都吃了,但吃了对应的界面控件中的属性,不是所有类型都能消化0.0.这里好好好想明白。
感觉c#的Object类型,是一个很灵活也有很容易忽略问题的东西。是一把双刃剑。但必须得好好掌握!