Sto utilizzando MVVM light con WPF. Voglio impostare il colore di sfondo del pulsante in base ad alcune condizioni specifiche tramite ViewModel. Si prega di suggerire un modo per ottenerlo. GraziePulsante Cambia Colore di sfondo tramite pattern MVVM in WPF
9
A
risposta
18
utilizzando i trigger:
<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>
In MVVM è anche possibile gestire questo spesso nel modello visualizzazione tramite get-proprietà di sola così, ad esempio,
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;
}
}
Poi basta legano a Background
.
22
si potrebbe associare il fondo a una proprietà sul ViewModel il trucco è quello di utilizzare un IValueConverter per restituire un pennello con il colore il vostro bisogno, ecco un esempio che converte un valore booleano dal ViewModel ad un colore
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 un'espressione vincolante come
"{Binding Reviewed, Converter={StaticResource BoolToColorConverter}}"
+0
Questo ha funzionato meglio della risposta selezionata per WPF. – tzerb
Problemi correlati
- 1. cambia colore di sfondo
- 2. C# Cambia il colore di sfondo di un pulsante
- 3. cambia sfondo UIAlertcontroller Colore
- 4. cambia colore di sfondo pulsante quando si fa clic su
- 5. select2 cambia colore di sfondo
- 6. UI di aggiornamento dalla classe ViewModel (pattern MVVM) in WPF
- 7. Gnuplot - cambia colore di sfondo
- 8. Cambia colore di sfondo e colore carattere
- 9. Cambia colore pulsante in AlertDialog
- 10. pulsante Cambia colore onclick
- 11. Cambia colore di sfondo 'correzioni' in eclissi
- 12. Cambia azioneBar Colore sfondo dinamicamente
- 13. Cambia colore del testo in base al colore di sfondo
- 14. Cambia immagine utilizzando il trigger WPF MVVM
- 15. Cambia il colore di sfondo di NSButton
- 16. Come si "disabilita" un pulsante in WPF usando il pattern MVVM?
- 17. Android: cambia dinamicamente TextView Colore di sfondo
- 18. MVVM modifica il colore di sfondo della griglia al clic
- 19. ActionBar Android non cambia colore di sfondo
- 20. Cambia colore di sfondo con ng-Style
- 21. Android: Cambia colore di sfondo del frammento
- 22. Cambia colore di sfondo con jQuery Mobile
- 23. Cambia colore di sfondo delle schede attive
- 24. Cambia colore di sfondo sull'applicazione console C#
- 25. Cambia dinamicamente il colore di sfondo del widget in Tkinter
- 26. pulsante di Android colore di sfondo
- 27. Cambia pulsante Android: sfondo a diversi drawable
- 28. Modifica colore sfondo riga griglia in WPF
- 29. Wpf animare il colore di sfondo
- 30. Listbox elemento WPF colore di sfondo
Questo è un modo molto carino per farlo quando si usa wpf, se si cerca codice che possa portarsi su silverlight, si può anche richiedere l'espressione SDK per il trigger symantics –