Mein Ziel ist es, die Hintergrundfarbe einer Zelle in einem RadGridView in meinem WPF-Projekt als der Wert in den zugrunde liegenden Daten zu formatieren. Diese Daten sind jedoch dynamisch, so dass ich keine vordefinierten Vorlagen verwenden kann.WPF: Ändern der Bindung in Vorlage in Code hinter
Es gibt RGB-Werte in meiner zugrunde liegenden Tabelle (allerdings mit Leerzeichen anstelle von Kommas, also benutze ich einen Konverter, um das zu beheben) und in einem Testprojekt, wo ich hatte einzelne Spalte „Farbe“ und Vorlage, funktionierte alles ein Genuss:
<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>
Das Problem ist jetzt, wie ich mit dieser Vorlage arbeiten in einem dynamischen Szenario verwendbar zu sein. Im Grunde alles, was ich ändern muß, ist „Farbe“ in diesem Teil:
BorderBrush="{Binding Colour, Converter={StaticResource lStringToBrushConverter}}"
aber ich bin nicht sicher, wie das in Code-behind erreicht werden kann. Ich kann TryFindResource verwenden, um das DataTemplate zu erhalten, aber der nächste Schritt zum Ändern der Bindung ist, wo ich feststecke.
Ich habe this Beispiel von Telerik geschaut, die unter verschiedenen Umständen funktioniert, wenn der Wert mit einem anderen Wert verglichen wird, aber es löst nicht mein Problem.
Vielen Dank ..
Warum also CellTemplateSelector nicht helfen? Es ermöglicht die Auswahl einer Vorlage basierend auf einem Datenelement, das genau das zu sein scheint, was Sie brauchen. – Evk
Nun, ich könnte Hunderte von Zeilen haben alle mit einem anderen Wert und ich möchte keine Vorlage für jede Eventualität erstellen. Das würde funktionieren, wenn ich z.B. nur rot, blau, grün oder etwas, aber die RGB-Werte werden vom Benutzer mit einem Farbwähler ausgewählt. – miriyo
Ihr Problem ist dann nicht klar. Sie haben in jeder Zeile RGB-Werte, die durch die Color-Eigenschaft dargestellt werden. Warum können Sie nicht einfach an Farbe binden, wie Sie beschreiben, warum die Bindung ändern? Oder meinst du den ganzen Unterschied, dass du 3 Spalten (R, G und B) anstelle von einem hast? – Evk