WPF_Listview中的一个让人哭笑不得的BUG.

wlbendanwl 2008-12-29 11:08:02
发现一个wpf中listview.gridview的一个BUG。查资料,说是在sp1中已经修正,装上SP1,结果又发现一个新BUG。
我的命怎么这么苦哇。



这个BUG让人哭笑不得。
Text="{Binding Path=Close, StringFormat=_{0:f}}" 正常
Text="{Binding Path=Close, StringFormat={0:f}}" 编译不过



因为要显示表格,所以使用了ListView中的GridView视图.开始是直接写xaml代码,因为要保留2位小数,所以用了stringformat属性.结果就出现上面的问题.直接用{0:f},编译不过.在前面随便加些字符却能正常编译和使用了.

没办法,只好改用代码来写.

GridViewColumn gcv_close = new GridViewColumn();
gcv_close.Header = "现价";
Binding bd_close = new Binding("Close");
bd_close.StringFormat = "f";
gcv_close.DisplayMemberBinding = bd_close;
gv.Columns.Add(gcv_close);

运行正常.搞定.结果正常.没想到苦难才刚刚开始.因为是列表显示的数据,所以为了用户体验,要求数字列右对齐.于是按微软官方作法,使用自定义模板,

<DataTemplate x:Key="template_close">
<TextBlock HorizontalAlignment="Right" Text="{Binding Path=Close,StringFormat={0:f}" />
</DataTemplate>

这里问题来了.如果使用xaml代码来写自定义模板.那么StringFormat这里就没办法正常编译通过.于是再次决定用代码来写模板.但是才写了几句却发现,原来微软已经废弃了使用代码书写模板的作法.也就是说现在不允许用代码来直接写模板了,查官方资料,官方建议一般情况下使用xaml书写模板,如果需要用代码的话,可以直接用xamlreader来读取xaml字符串生成模板.这两个办法都试过,都不行.

  现在只有一个笨办法,把数据源中的对应值改为string类型,在数据源中直接就存储为{f}样式的字符串.但是用这个办法,真的感觉很雷..

  新东西好是好,就是Bug太多.赶快出sp2吧.

  另外如果有哪位高人能够帮忙解决一下我的问题,不胜感激.
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
king19840811 2009-01-03
  • 打赏
  • 举报
回复
没分啊。老大你说会有人来吗
wlbendanwl 2009-01-03
  • 打赏
  • 举报
回复
怎么都没人回答呀.
现在国内用WPF的人真少.
郁闷.
wlbendanwl 2008-12-30
  • 打赏
  • 举报
回复
怎么都没人回复呀,各位帮帮忙

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧