使用MVVM的WPF應用程序。我有一個TextBox的Text屬性綁定到視圖模型的十進制屬性。此屬性表示貨幣值。我希望TextBox以貨幣格式顯示數據。爲此,我在綁定中將StringFormat設置爲「c」。這按預期工作。WPF使用MVVM更改綁定格式
問題是,如果SourceUpdateTrigger是PropertyChanged,當用戶開始輸入時,輸入第一個字符後將應用格式,然後將光標定位在剛剛輸入的字符之前。這意味着下一個字符將在第一個之前而不是之後輸入。如果SourceUpdateTrigger是LostFocus,則用戶必須在確認按鈕被啓用之前將焦點轉移到另一個控件,這會在驗證貨幣字段之後發生。
我希望做的事情是處理GotFocus和LostFocus事件,獲取綁定的引用並更改其StringFormat屬性。我對MVVM沒有任何問題,因爲這是純粹的UI問題。問題是拋出了一個異常,我被告知綁定在使用後無法更改。
我考慮了各種其他選項,包括自定義轉換器。這雖然沒有奏效,因爲我無法解決如何使用ConverterParameter將控件的IsFocused屬性公開給轉換器。
任何人有任何想法?