Controles WPF: ¿Debería evitarse el código detrás a toda costa?

Tengo un proyecto WPF y necesito crear un control que sea específico para el dominio pero que se reutilizará en varias vistas.

El control debe mostrar un valor decimal en 3 partes, la parte integral y la parte decimal dividida en 2 con diferentes tamaños de fuente. Tengo una propiedad de dependencia para la Cantidad y luego divido la cantidad en 3 partes en el código que está detrás para poder mostrarlas en las tags específicas. También utilizo la cantidad decimal para decidir si la cantidad va hacia arriba o hacia abajo y luego cambio el color de fondo del control. Todo esto se hace en el código de atrás. Sé que algunos dicen que el código detrás es malo y estoy de acuerdo en la mayoría de los casos. Sin embargo, ¿cómo implementarías esto de otra manera?

No, no debe evitarse a toda costa .

Recuerde, los datos son datos, la interfaz de usuario es la interfaz de usuario .

Por ejemplo, si tiene un código que solo hace cosas de UI, entonces no hay nada de malo en tener un código detrás.

Cualquier cosa que funcione con datos reales, incluido el trabajo con ViewModel , generalmente debe evitarse en el código subyacente, ya que entonces estaría creando dependencias, lo que rompe el patrón de diseño de MVVM.

Entonces, para responder su pregunta de manera más directa, no hay nada de malo en lo que ha hecho.

EDITAR

Déjame explicarte más.

Imagine la escena, tiene una vista, con un botón que necesita iniciar un Storyboard cuando se ha hecho clic. (Por supuesto, puedes hacer esto solo en XAML, pero esto es solo un ejemplo)

En este caso, no hay nada de malo en agregar un evento de clic al botón y comenzar el guión gráfico desde el código subyacente. Este es el único código de la interfaz de usuario , por lo que es seguro.

Sin embargo, digamos que su botón necesita cambiar una propiedad en su ViewModel cuando se hace clic. No debe obtener el DataContext en el código subyacente. Deberá usar un Command porque debe mantener la vista separada de ViewModel .

Existe el estigma de que si sus puntos de vista tienen un código subyacente, entonces deben retirarlo y dispararle en la parte posterior de la cabeza, estilo de ejecución. Esto no es cierto.

Todo lo dicho, MVVM es un patrón , no la ley.

En lugar de dividir la Cantidad en 3 en el Código Detrás, puede mantener una Cantidad de Propiedad en ViewModel y Usar un Convertidor con 3 Parámetros para extraer una de las tres piezas de información para la Pantalla. Así que puedes tener 3 enlaces como este:

 "{Binding Amount, Mode=TwoWay, Converter={StaticResource AmountSplitterConverter},ConverterParameter=Integral}" "{Binding Amount, Mode=TwoWay, Converter={StaticResource AmountSplitterConverter},ConverterParameter=Decimal1}" "{Binding Amount, Mode=TwoWay, Converter={StaticResource AmountSplitterConverter},ConverterParameter=Decimal2}" 

Déjeme saber si necesita más ayuda para implementarlo o si no está claro.