使用MVVM的WPF应用程序。我有一个TextBox的Text属性绑定到视图模型的十进制属性。此属性表示货币值。我希望TextBox以货币格式显示数据。为此,我在绑定中将StringFormat设置为“c”。这按预期工作。WPF使用MVVM更改绑定格式
问题是,如果SourceUpdateTrigger是PropertyChanged,当用户开始输入时,输入第一个字符后将应用格式,然后将光标定位在刚刚输入的字符之前。这意味着下一个字符将在第一个之前而不是之后输入。如果SourceUpdateTrigger是LostFocus,则用户必须在确认按钮被启用之前将焦点转移到另一个控件,这会在验证货币字段之后发生。
我希望做的事情是处理GotFocus和LostFocus事件,获取绑定的引用并更改其StringFormat属性。我对MVVM没有任何问题,因为这是纯粹的UI问题。问题是抛出了一个异常,我被告知绑定在使用后无法更改。
我考虑了各种其他选项,包括自定义转换器。这虽然没有奏效,因为我无法解决如何使用ConverterParameter将控件的IsFocused属性公开给转换器。
任何人有任何想法?