Я хотел бы иметь TextBox, отображающий число в формате валюты (путем установки StringFormat=c в привязке). Когда выбран TextBox (когда IsKeyboardFocused==true), я бы хотел, чтобы форматирование исчезло, пока фокус на TextBox не будет потерян.
Я нашел способ сделать это, код вставлен ниже. Моя проблема заключается в том, что привязка указана внутри Style - это означает, что я должен перепечатать стиль для каждого TextBox, для которого я хочу это сделать. В идеале я хотел бы поместить стиль где-нибудь в центре и повторно использовать его для каждого TextBox с разными целями привязки для каждого.
Есть ли способ, используя Style, установить параметр существующей привязки, что-то вроде Text.Binding.StringFormat=""? (В отличие от установки всего значения Text на вновь определенную привязку)
Другие предложения для достижения этого также будут оценены.
Код (это работает, просто неудобно):
<TextBox x:Name="ContractAmountTextBox">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsKeyboardFocused, ElementName=ContractAmountTextBox}" Value="False">
<Setter Property="Text" Value="{Binding Path=ContractAmount, UpdateSourceTrigger=LostFocus, StringFormat=c}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsKeyboardFocused, ElementName=ContractAmountTextBox}" Value="True">
<Setter Property="Text" Value="{Binding Path=ContractAmount, UpdateSourceTrigger=LostFocus}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>