簡體   English   中英

在WPF綁定中設置十進制屬性的默認值

[英]Setting the Default Value for Decimal Property in WPF Binding

我將WPF表單綁定到Decimal的類的屬性。 如果用戶輸入無效的格式(字符串而不是十進制),則文本框會自動以紅色顯示。 但是,我想通過在將插入的數據存儲到數據庫之前進行驗證來使其更加安全。

問題是,每當用戶輸入非十進制值時,綁定將返回0,而不是null或error。 因此,它無需第二級驗證就可以進入數據庫。

驗證WPF與小數的綁定的最佳方法是什么? 現在它不會返回null,所以我沒有任何辦法捕獲錯誤。

這是我綁定文本框的方式

        <TextBox x:Name="stockTxtBx" Grid.Row="3" Grid.Column="1"  Style="{StaticResource StandardBox}" Text="{Binding StockOnHand}"/>

另外,在哪里可以修改以添加驗證?

問題是,每當用戶輸入非十進制值時,綁定將返回0,而不是null或error

您在上述聲明中略有錯誤。 當用戶輸入某些文本的特定字段的類型無效時, 實際發生的情況是:

  1. 無效的文本會導致在TextBox周圍出現紅色邊框(或其他修飾,具體取決於ErrorTemplate值)。
  2. 數據綁定屬性值保留為最后輸入的有效值

因此,在您的情況下,最后一個有效值可能0 ,這就是為什么您認為無效值將始終返回0 因此,實際上,只有無效值被忽略,而最后一個有效值仍然保留。

但是,要解決此問題,您有幾種選擇。 一種方法是保存數據之前檢查Validation.HasError Attached屬性的值。 顯然,如果您檢測到存在任何錯誤,那么您將彈出一條消息來提醒用戶,而不是繼續保存。 您可以從MVVM問題中的Binding Validation.HasError屬性中找到有關此方法的更多信息。

另一個選擇是限制特定TextBox的文本輸入,這樣就不可能輸入非數字鍵。 在這里,我將不再詳細介紹如何執行此操作,而是希望您在WPF堆棧上,要求您查看WPF中數值數據輸入問題的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM