J'ai une classe appelée Question
qui représente une question et sa réponse. J'ai une application qui rend un ObservableCollection de Question
objets. Chaque Question
est rendu comme un StackPanel qui contient un TextBlock pour le verbiage de question, et un TextBox pour l'utilisateur à entrer dans une réponse. Les questions sont rendues à l'aide d'un ItemsControl, et j'ai initialement défini le style de StackPanel des questions en utilisant une clé StaticResource appelée 'IncorrectQuestion' (définie dans la section UserControl.Resources de la page). Dans la section UserControl.Resources, j'ai également défini une clé calld 'CorrectQuestion' dont j'ai besoin pour m'appliquer en quelque sorte au StackPanel de la Question lorsque l'utilisateur répond correctement à la question. Mon problème est que je ne suis pas sûr de changer dynamiquement le style du StackPanel, en particulier dans les contraintes d'une classe ViewModel (c'est-à-dire que je ne veux pas mettre de code de sélection de style dans le code-behind de View). Ma classe Question
a une propriété IsCorrect
qui est définie avec précision lorsque la correction est prise. Je voudrais en quelque sorte refléter la valeur IsCorrect
sous la forme d'une sélection de style. Comment je fais ça?Silverlight ~ MVVM ~ Paramètre dynamique de la propriété Style basé sur la valeur du modèle
3
A
Répondre
3
L'utilisation d'un convertisseur de valeur est une solution.
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<local:BoolToStyleConverter x:Key="Correctness">
<local:BoolToStyleConverter.FalseValue>
<Style TargetType="TextBox">
<Setter Property="Background" Value="Salmon" />
</Style>
</local:BoolToStyleConverter.FalseValue>
<local:BoolToStyleConverter.TrueValue>
<Style TargetType="TextBox">
<Setter Property="Background" Value="AliceBlue" />
</Style>
</local:BoolToStyleConverter.TrueValue>
</local:BoolToStyleConverter>
</Grid.Resources>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Question}" />
<TextBox x:Name="Answer" Text="{Binding Answer, Mode=TwoWay}"
Style="{Binding IsCorrect, Converter={StaticResource Correctness}}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
Vous pouvez trouver la base du BoolToStyleConverter
est basé sur ce blog post. Créé comme: -
public class BoolToStyleConverter : BoolToValueConverter<Style> { }
Questions connexes
- 1. Comportement Silverlight basé sur la mise à jour de la propriété du modèle de vue
- 2. Changement de contenu dynamique basé sur la feuille de style
- 3. SilverLight - MVVM liant la propriété viewmodel à la colonne datagrid
- 4. style Trigger sur la propriété
- 5. Silverlight MVVM reliant le modèle et le modèle de vue
- 6. Asp.Net MVC - Liaison du paramètre à la valeur du modèle!
- 7. Ajout dynamique de vues dans Silverlight et MVVM
- 8. Mvvm Silverlight, utilisant la liaison aux lignes de style par programmation dans un DataGrid SilverLight
- 9. Changer la propriété d'affichage dynamique
- 10. Relier la propriété de dépendance Silverlight Custom Control à la propriété Modèle
- 11. Reporting Services Paramètre dynamique Contenu basé sur d'autres paramètres
- 12. Déroulement dynamique basé sur la sélection Radio
- 13. WPF Trigger liaison à la propriété MVVM
- 14. Silverlight - lier la colonne DataGrid à la propriété racine du modèle de vue?
- 15. MVVM & WCF - Voir le modèle et la relation de modèle
- 16. Modèle d'application iOS basé sur la vue
- 17. Modèle de contrôle dynamique dans Silverlight
- 18. Affichage de contrôle dynamique avec Silverlight, PRISM et MVVM
- 19. Modifier la valeur du paramètre bgcolor sur la souris?
- 20. capture de la valeur de la propriété de style changement de la valeur en utilisant Jquery
- 21. Modèle d'application basé sur la navigation IPhone
- 22. Activation d'un paramètre basé sur la valeur d'un autre paramètre dans Reporting Services
- 23. Question sur le modèle MVVM sur WPF?
- 24. Définition de la visibilité à l'aide du modèle MVVM dans Silverlight
- 25. Signaux de carte Qt basés sur la valeur du paramètre
- 26. TypeInitializeException sur le modèle MVVM
- 27. Fenêtres enfants Silverlight dans le modèle MVVM
- 28. appel jQuery .NET webservice, paramètre basé sur la valeur dans la cellule
- 29. Commandes MVVM Relay avant que Silverlight NumericUpDown change de valeur
- 30. Silverlight TextBlock Valeur de propriété de la propriété avant l'application de la liaison
J'ai essayé d'utiliser un convertisseur de valeur, mais je n'arrive pas à le faire fonctionner. Je pense que je faisais juste quelque chose de mal. Je vais revoir cette option. À votre santé! – eponymous23