【问题标题】:WPF binding replace zeros with blanksWPF 绑定用空格替换零
【发布时间】:2021-06-21 05:19:21
【问题描述】:

我在下面有这个 WPF xaml 绑定元素:

<telerik:GridViewDataColumn DataMemberBinding="{Binding Value, StringFormat='0.00'}" />

如果Value0,我希望它显示一个空字符串。

我试过了:

DataMemberBinding="{Binding TotalStops, StringFormat='{}{0:#.#0}'}"

但是当Value0 时,它会显示.00 而不是空字符串。

【问题讨论】:

  • 可能有不同的实现方式,WPF 喜欢长切方式(转换器、DataTriggers 等).. 哈哈。但如果我是你,我可能会这样做answer

标签: c# wpf


【解决方案1】:

在 WPF 中,StringFormat 支持 the ";" section separator

试试这个:

DataMemberBinding="{Binding Value, StringFormat={}{0:#.#0;(0);''}}"

此示例显示 3 种值格式:从左到右的正值、负值和零值格式,用分号分隔。

Muhammad Shujaat Siddiqi 来自article 的图片参考


这不仅限于 WPF,它适用于一般使用字符串格式的任何地方。

double x = 0.00;
x.ToString("#.#0;;A BIG ZERO");
Console.WriteLine(x);

【讨论】:

  • 行得通,谢谢!我在'' 背靠背引号下得到一条深绿色的波浪线(期待一个紧密的大括号),有什么想法吗? Prolly 可以安全忽略
  • @Rod:您可能必须为零值格式转义单引号。我没有 WPF 项目,但我可能会尝试一下。
  • @Rod:已修复。只需删除整个 StringFormat 表达式周围的单引号即可。请参阅上面的更正答案。
  • 感谢您提供额外的见解,如果可以的话,我会给您仔细检查一下,哈哈。
  • @Rod:不幸的是,节格式化程序不能在 TimeSpan 上工作(或者也可能是 DateTime)。一个干净的选择是这种情况是 ValueConverter。
猜你喜欢
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2018-01-05
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多