Modificando os parâmetros da vinculação de texto de uma caixa de texto através do uso de um estilo
Gostaria de ter umTextBox
que exibe um número no formato de moeda (configurandoStringFormat=c
na encadernação). Quando oTextBox
está selecionado (quandoIsKeyboardFocused==true
), Gostaria que a formatação desaparecesse até o foco noTextBox
está perdido
Eu encontrei uma maneira de fazer isso, código colado abaixo. Meu problema com isso é que a ligação é especificada dentro doStyle
- isso significa que preciso redigitar o estilo para cadaTextBox
Eu quero fazer isso por. Idealmente, gostaria de colocar o estilo em algum lugar central e reutilizá-lo para todos osTextBox
, com um destino de ligação diferente para cada u
Existe uma maneira para mim, usando umStyle
, para definir um parâmetro na ligação existente, algo comoText.Binding.StringFormat=""
? (Ao contrário de definir o valor inteiro do texto como uma ligação recém-definida)
Outras sugestões para isso também serão apreciada
Code (isso funciona, é apenas inconveniente):
<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>