Bindungs ??Hintergrund (Farbe) für die gesamte Zeile eines telerik: GridViewDataControl WPF Steuer

StackOverflow https://stackoverflow.com/questions/3687669

Frage

Ich habe die folgende Klasse:

public class ErrorMessage
{
    public enum Severity { Error, Warning}

    public ErrorMessage(Severity severity, string description) 
    {
        this.severity = severity;
        this.description = description;
    }
    public Severity severity { get; set; }
    public string description { get; set; }
    public string background
    {
        get
        {
            switch (this.severity)
            {
                case Severity.Error: return "Red";
                case Severity.Warning: return "Yellow";
                default: throw new Exception("severity out of bounds");
            }
        }
    }
}

Und ich bin Bindung eine Liste der Fehlermeldung an ein telerik GridViewDataControl WPF-Steuerelement:

<telerik:GridViewDataControl Margin="0" telerik:StyleManager.Theme="Office_Silver" Name="errorsGridView" AutoGenerateColumns="False" CanUserSortColumns="False" IsFilteringAllowed="False" ShowGroupPanel="False">
    <telerik:GridViewDataControl.Columns>
        <telerik:GridViewDataColumn IsReadOnly="True" UniqueName="{x:Null}" Header="Severity" DataMemberBinding="{Binding severity}" />
        <telerik:GridViewDataColumn IsReadOnly="True" UniqueName="{x:Null}" Header="Description" DataMemberBinding="{Binding description}" />
    </telerik:GridViewDataControl.Columns>
</telerik:GridViewDataControl>

Ich möchte die gesamte Hintergrundfarbe jeder Zeile durch die Eigenschaft ErrorMessage.background gebunden zu sein. Wie mache ich das? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Eine andere Methode ist es, eine RowStyle zu verwenden, die von Ihrer Klasse ist verbindlich. Um zu vermeiden, jeden Konverter zu verwenden oder auch ein Ereignis, ändern Sie Ihre Errormessage-Code zu so etwas wie folgt aus:

public SolidColorBrush background
{
    get
    {        
        switch (this.severity)
        {
            case Severity.Error: return new SolidColorBrush(Colors.Red);                   
            case Severity.Warning: return new SolidColorBrush(Colors.Yellow);
            default: throw new Exception("severity out of bounds");
        }
    }
}

Und dann diese Ressource hinzufügen:

        <Style x:Key="xGridViewRowStyle"
               TargetType="telerik:GridViewRow">
            <Setter Property="Background"
                    Value="{Binding background}" />
        </Style>

Und auf RadGridView:

RowStyle="{StaticResource xGridViewRowStyle}"

etwas anderer Ansatz, aber nur um es getestet und es funktioniert auf jeden Fall. :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top