Estoy escribiendo un programa WPF y estoy tratando de encontrar una forma de formatear datos en un TextBox a través de algún método repetible como un estilo o plantilla. Tengo muchos TextBoxes (95 para ser exactos) y cada uno está vinculado a sus propios datos numéricos que pueden tener cada uno su propia resolución definida. Por ejemplo, si los datos son 99,123 con una resolución de 2, debería mostrar 99,12. De manera similar, un valor de datos de 99 y una resolución 3 deben mostrarse como 99.000 (no 99). ¿Hay alguna forma de hacer esto?
Editar: Debo aclarar, hay 95 TextBoxes en la pantalla actual en la que estoy trabajando, pero quiero que cada TextBox en las distintas pantallas de mi programa muestre el número correcto de lugares decimales. Ahora que lo pienso, algunos de estos son TextBoxes (como la pantalla en la que estoy trabajando ahora) y algunos son DataGrids o ListViews, pero si puedo averiguar cómo hacer que funcione para TextBoxes, estoy seguro de que puedo entender también para los otros controles.
No hay mucho código para compartir en este caso, pero intentaré aclararlo:
Tengo un modelo de vista que contiene las siguientes propiedades (vb.net):
Public ReadOnly Property Resolution As Integer
Get
Return _signal.DisplayResolution
End Get
End Property
Public ReadOnly Property Value As Single
Get
Return Math.Round(_signal.DisplayValue, Resolution)
End Get
End Property
y en el XAML tengo:
<UserControl.Resources>
<vm:SignalViewModel x:Key="Signal" SignalPath="SomeSignal"/>
</UserControl.Resources>
<TextBox Grid.Column="3" IsEnabled="False" Text="{Binding Path=Value, Source={StaticResource Signal}, Mode=OneWay}" />
EDIT2 (mi solución): Resulta que después de alejarme de la computadora por un tiempo, regresé para encontrar una respuesta simple que me estaba mirando a la cara. ¡Formatee los datos en el modelo de vista!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
IValueConverter
? Pase el valor real y la resolución al convertidor y déjelo redondear por usted mismo. Es difícil sugerir unStringFormat
sin saber exactamente cómoTextBox
se generan estos 95 .