Mon objectif est de formater la couleur d'arrière-plan d'une cellule dans un projet RadGrid dans mon projet WPF pour qu'elle soit celle de la valeur dans les données sous-jacentes. Ces données sont dynamiques, donc je ne peux pas utiliser de modèles prédéfinisWPF: Modification de la liaison dans le modèle dans le code
Il y a des valeurs RVB dans ma table sous-jacente (bien qu'avec des espaces au lieu de virgules donc j'utilise un convertisseur pour corriger cela) et dans un projet de test où j'ai eu un seule colonne « couleur » et modèle, tout fonctionnait un régal:
<Window.Resources>
<local:StringToBrushConverter x:Key="lStringToBrushConverter"></local:StringToBrushConverter>
<DataTemplate x:Key="ColourCellTemplate">
<Border Name="lBorder" BorderThickness="3" Margin="1" CornerRadius="1" Width="100"
BorderBrush="{Binding Colour, Converter={StaticResource lStringToBrushConverter}}">
<TextBlock Background="{Binding ElementName=lBorder, Path=BorderBrush}" ></TextBlock>
</Border>
</DataTemplate>
</Window.Resources>
Le problème est maintenant comment je peux travailler avec ce modèle pour être utilisable dans un scénario dynamique. Essentiellement, tout ce que je dois changer est « Couleur » dans cette partie:
BorderBrush="{Binding Colour, Converter={StaticResource lStringToBrushConverter}}"
mais je ne sais pas comment cela peut être réalisé dans le code-behind. Je peux utiliser TryFindResource pour obtenir le DataTemplate mais l'étape suivante pour changer la liaison est l'endroit où je suis coincé.
J'ai regardé this exemple de Telerik qui fonctionne dans des circonstances différentes lorsque la valeur est comparée à une autre valeur, mais cela ne résout pas mon problème.
Un grand merci ..
Alors pourquoi CellTemplateSelector n'aide pas? Il permet de sélectionner un modèle basé sur un élément de données, ce qui semble exactement ce dont vous avez besoin. – Evk
Eh bien, je pourrais avoir des centaines de lignes toutes avec une valeur différente et je ne veux pas créer un modèle pour chaque éventualité. Cela fonctionnerait si j'avais, par exemple, juste rouge, bleu, vert ou quelque chose mais les valeurs RVB sont sélectionnées par l'utilisateur en utilisant un sélecteur de couleur. – miriyo
Votre problème n'est pas clair alors. Vous avez des valeurs RVB dans chaque ligne, représentée par la propriété Color. Pourquoi vous ne pouvez pas simplement lier à la couleur que vous décrivez, pourquoi changer de liaison? Ou vous voulez dire que toute la différence est que vous avez 3 colonnes (R, G et B) au lieu d'une? – Evk