如下圖,在憑證編輯窗體中,有的單元格不需要數字,但如果錄入數字後再刪除,會觸發數字驗證,單元格顯示紅色框線,導致不能執行其他操作。 Xaml代碼如下: 解決思路是用轉換器Converter代替StringFormat: Xmal主要代碼: C#主要代碼: ...
如下圖,在憑證編輯窗體中,有的單元格不需要數字,但如果錄入數字後再刪除,會觸發數字驗證,單元格顯示紅色框線,導致不能執行其他操作。
Xaml代碼如下:
<DataGridTextColumn Header="借方金額" Binding="{Binding Path=FDebit, StringFormat='#,##0.00;-#,##0.00;#'}" Width="200" ElementStyle="{StaticResource dgCellRigth}"/>
解決思路是用轉換器Converter代替StringFormat:
Xmal主要代碼:
<Window.Resources> <local:NumConver x:Key="numConverter"/> </Window.Resources>
<DataGridTextColumn Header="借方金額" Binding="{Binding Path=FDebit, Converter={StaticResource numConverter}}" Width="200" ElementStyle="{StaticResource dgCellRigth}"/>
C#主要代碼:
public class NumConver : IValueConverter { //當值從綁定源傳播給綁定目標時,調用方法Convert public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string strNum = value.ToString(); if (string.IsNullOrEmpty(strNum)) return null; decimal decNum = (decimal)value; return decNum.ToString("#,##0.00;-#,##0.00;#"); } //當值從綁定目標傳播給綁定源時,調用方法ConvertBack
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
string strNum = value.ToString(); if (string.IsNullOrEmpty(strNum)) return null; decimal decNum; if (decimal.TryParse(strNum, out decNum)) { return decNum; } else { return DependencyProperty.UnsetValue; //未設定值,對非法數字進行數字驗證,單元格以紅色框線提示,等待修改 //return null; //null值,對非法數字進行丟棄。註意這兩行代碼的區別 } } }