DataGrid中數據顯示如下圖,數據格式比較雜亂。希望達到以下要求:(1)所有數據保留兩位小數;(2)超過1000的數字顯示千分位;(3)如果數據為0,不顯示。 首先想到用StringFormat進行格式化: 效果如下圖,希望實現的要求(1)和(2)達到了,但(3)如果數據為0,不顯示的要求沒有達 ...
DataGrid中數據顯示如下圖,數據格式比較雜亂。希望達到以下要求:(1)所有數據保留兩位小數;(2)超過1000的數字顯示千分位;(3)如果數據為0,不顯示。
首先想到用StringFormat進行格式化:
<DataGridTextColumn Header="借方金額" Binding="{Binding Path=FDebit, StringFormat={}{0:N2}}" Width="200" ElementStyle="{StaticResource dgCellRigth}"/>
效果如下圖,希望實現的要求(1)和(2)達到了,但(3)如果數據為0,不顯示的要求沒有達到。
改為以下方法再試(格式代碼分3段,分別為正數格式、負數格式、0格式):
Binding="{Binding Path=FDebit, StringFormat={}{#,##0.00;-#,##0.00;#}}"
提示代碼出錯,刪除掉格式代碼中的逗號後則正常:
Binding="{Binding Path=FDebit, StringFormat={}{###0.00;-###0.00;#}}"
如此一來,雖然數字0不顯示了,但千分位也不顯示了。再次嘗試將其中的花括弧改為單引號,終於實現了預期要求。
<DataGridTextColumn Header="借方金額" Binding="{Binding Path=FDebit, StringFormat='#,##0.00;-#,##0.00;#'}" Width="200" ElementStyle="{StaticResource dgCellRigth}"/>
效果如下: