Estoy usando luz MVVM con WPF. Quiero establecer el color de fondo del botón en función de alguna condición específica a través de ViewModel. Amablemente sugiera alguna forma de obtenerlo. GraciasBotón de cambio Color de fondo a través del patrón MVVM en WPF
9
A
Respuesta
18
Uso de disparadores:
<Button>
<Button.Style>
<Style TargetType="Button">
<!-- Set the default value here (if any)
if you set it directly on the button that will override the trigger -->
<Setter Property="Background" Value="LightGreen" />
<Style.Triggers>
<DataTrigger Binding="{Binding SomeConditionalProperty}"
Value="True">
<Setter Property="Background" Value="Pink" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
En MVVM también puede a menudo manejar esto en la vista de modelo a través de propiedades get-sólo así, por ejemplo,
public bool SomeConditionalProperty
{
get { /*...*/ }
set
{
//...
OnPropertyChanged("SomeConditionalProperty");
//Because Background is dependent on this property.
OnPropertyChanged("Background");
}
}
public Brush Background
{
get
{
return SomeConditinalProperty ? Brushes.Pink : Brushes.LightGreen;
}
}
Luego, solo tiene que enlazar a Background
.
22
que podría obligar a la del fondo de una propiedad en el modelo de vista el truco es usar un IValueConverter para devolver un pincel con el color sus requieren, aquí está un ejemplo que convierte un valor booleano desde el modelo de vista de un color
public class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return new SolidColorBrush(Colors.Transparent);
}
return System.Convert.ToBoolean(value) ?
new SolidColorBrush(Colors.Red)
: new SolidColorBrush(Colors.Transparent);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
con una expresión de enlace como
"{Binding Reviewed, Converter={StaticResource BoolToColorConverter}}"
+0
Esto funcionó mejor que la respuesta seleccionada para WPF. – tzerb
Cuestiones relacionadas
- 1. gtk (mm) 3 botón cambio de color de fondo
- 2. cambio de color de fondo
- 3. Cambio del color del botón mediante programación
- 4. WPF OpenFileDialog con el patrón MVVM?
- 5. Cambio del color de fondo de un JToggleButton seleccionado
- 6. jQuery validar el cambio de color del fondo del elemento
- 7. Cambio del color de fondo de la barra de título de WPF
- 8. WPF: ¿Cómo animar el cambio de color?
- 9. Selector de fondo del botón
- 10. cómo obtener el color de fondo del botón en Android?
- 11. jQuery Mobile botón color de fondo
- 12. org.eclipse.swt.widgets Cambio de color de fondo en Windows
- 13. ¿Cuáles son los problemas del patrón MVVM?
- 14. Cambio de color del botón al pasar el mouse
- 15. ¿Cómo cambio el color del texto de un botón?
- 16. WPF Capa de servicio MVVM
- 17. Anulación de fondo de botón en WPF en Aero
- 18. WPF y MVVM: cambio del convertidor de enlace de datos en tiempo de ejecución
- 19. ViewModels de construcción a base de Entidades Modelo anidadas en WPF y patrón MVVM
- 20. Animar cambio de color de fondo en Android
- 21. ¿Cómo cambio el color de fondo de la vista del navegador en eclipse?
- 22. ¿Dudas en el patrón MVVM?
- 23. ¿Cómo se "desactiva" un botón en WPF usando el patrón MVVM?
- 24. WPF/Multithreading: UI Dispatcher en MVVM
- 25. Uso del patrón de diseño de la Unidad de trabajo/Sesiones NHibernate en un MVVM WPF
- 26. cómo cargar wpf usercontrol en el patrón MVVM
- 27. Cómo establecer el color del botón de un JButton (no color de fondo)
- 28. Transición del color de fondo
- 29. ¿Cómo cambio el color de fondo en gnuplot?
- 30. QTextEdit cambio de color de fondo también el color de la barra de desplazamiento
Esta es una forma muy buena de hacer esto cuando se usa wpf, si buscas un código que pueda transferirse a Silverlight, también puedes necesitar la expresión SDK para la simulación del trigger. –