簡體   English   中英

如何更改(即切換)WPF控件的綁定StringFormat屬性?

[英]How can I change (i.e. toggle) the bound, StringFormat property of a WPF control?

我有一個WPF TextBox ,它的文本值綁定在XAML中。 這可以正常工作,並且按預期方式,將關聯值加載到該字段時,可以按需要對其進行格式化。

我的問題是,當用戶輸入文本字段來修改值時,我想刪除格式並顯示原始基礎值。

為此,我嘗試在GotFocus事件中綁定的文本框上設置BindingExpression.ParentBinding.StringFormat屬性。 但是,當我嘗試將StringFormat屬性設置為空字符串時,出現以下異常:

使用綁定后將無法更改。

因此,在將控件綁定到數據模型對象之后,是否可以直接修改TextBox的字符串格式? 我願意更改格式化控件值的方式,但最終的願望是在編輯數據時剝離數據的格式,並在用戶退出字段后重新設置字符串格式。

我可能會嘗試不同的方式。 聽起來您正在使用相同的TextBox作為格式化值並編輯原始值。 使用兩個不同的TextBox進行“查看”和“編輯”,或將其打包在UserControl ,會更清潔。 另外,我將使用兩個屬性,例如RawTextFormattedText ,而UserControl將具有DependencyProperties並綁定到這兩個屬性。 UserControl將自動切換到Edit TextBox。 但是,“如何自動切換”的問題可能是一個挑戰。 您可能需要使用您提到的View TextBox的GotFocus,盡管擁有一個真正的Edit按鈕可以為您切換它並不是一個壞主意。

我了解切換到WPF的知識。 切換到WPF時需要進行很多調整(又稱學習)。 我認為這是設計一種“適合目的”的表單或控件。 不過,您不必創建新的UserControl。 您可以執行類似於StackOverflow的操作,其中有一個Edit TextBox,然后是View區域,這等效於Raw和Formatted值。 處於編輯模式時,可以通過BoolToVisibilityConverter控制“編輯文本框”的可見性。 在ViewModel上創建一個public bool IsEditing屬性,並將其綁定到<EditTextBox Visibility="{Binding IsEditing, Converter={StaticResource BoolToVisibilityConverter}}" Text="{Binding RawText}" ...etc... />使用WPF一段時間,您真的很喜歡數據綁定,這使它很難回到普通的WinForms(至少對我來說-並不是說沒有挑戰!)。

暫無
暫無

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

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