2010-10-18 12 views
0

J'ai un ViewModel avec Property int DepartmentColor. Bien sûr, je ne peux pas lier la valeur int à un CellStyle en XAML.Liaison d'un SolidColorBrush à un DataGridCell/CellStyle à partir d'un ViewModel

Dois-je faire un IntToStyleConverter ou devrais-je tâtonner avec la classe de style dans le ViewModel comme le convertir à un int SolicColorBrush et l'affecter à un style etc ...

Est-ce dernier la voie à suivre avec MVVM?

+0

L'utilisation du convertisseur pour convertir l'int en brush est plus simple dans tous les aspects. –

Répondre

0

Allez dans le convertisseur de chemin. En plus je donnerais un titre à la propriété quelque chose à l'effet de Department et ne pas attacher la couleur à elle car elle le rend plus étroitement couplé à l'interface utilisateur. Alors que le département peut être Comptabilité couplant cela à une couleur implique que vous êtes certain qu'il sera représenté par un Color, alors qu'en aval il peut être représenté d'une autre manière visuelle. Vous pouvez également créer les styles à l'avance, puis en sélectionner un et l'appliquer via le convertisseur, plutôt que d'essayer de les créer dans le code.

+0

Où est la différence de nommer le département de la propriété ou DepartmentColor? Le département est déjà réservé pour le nom du département ... Peut-être devrais-je expliquer: J'ai un organisateur/calendrier avec un DataGrid où chaque département a sa propre couleur de fond. Donc, le nommer DepartmentBackColor n'est pas faux, pourquoi devrait-il être faux? À votre suggestion: Lorsque je crée les styles, je les crée en code-behind ... Je suppose que comme vous n'avez pas écrit je devrais les créer dans le ViewMode. – Pascal

+0

Ma conviction est que vous ne devriez pas pousser les références de type UI dans le ViewModel. La couleur est une relation directe avec l'interface utilisateur. Autoriser l'interface utilisateur à déterminer quoi faire avec le type de département, qui peut être couleur dans cette instance. Créez les styles en tant que styles réutilisables dans un ResourceDictionary qui peut ensuite être référencé dans votre code derrière (convertisseur). –

+0

Si j'avais un modèle avec une propriété appelée DepartmentColor, je comprendrais votre argumentation. Mais c'est la propriété DepartmentMolor de ViewModel et le ViewModel sont liés directement à la vue. Alors pourquoi pas Département "Couleur"? Je trouve ça complètement correct. – Pascal