Modificación de los parámetros del enlace de texto de un cuadro de texto mediante el uso de un estilo
Me gustaría tener unTextBox
que muestra un número en formato de moneda (estableciendoStringFormat=c
en el enlace). Cuando elTextBox
está seleccionado (cuandoIsKeyboardFocused==true
), Me gustaría que el formato desaparezca, hasta que se centre en laTextBox
está perdido
Encontré una manera de hacer esto, el código pegado a continuación. Mi problema con esto es que el enlace se especifica dentro de laStyle
: esto significa que tengo que volver a escribir el estilo para cadaTextBox
Quiero hacer esto por. Idealmente, me gustaría poner el estilo en algún lugar central y reutilizarlo para cadaTextBox
, con un objetivo de enlace diferente para cada uno.
Hay una manera para mí, usando unaStyle
, para establecer un parámetro en el enlace existente, algo así comoText.Binding.StringFormat=""
? (En lugar de establecer el valor completo de Texto en un Enlace recién definido)
Otras sugerencias para lograr esto también serían apreciadas.
Code (esto funciona, es un 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>