3 Stimmen

Hintergrund (Farbe) für die gesamte Zeile eines telerik:GridViewDataControl WPF-Steuerelements binden

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 von ErrorMessage zu einem 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, dass die gesamte Hintergrundfarbe der einzelnen Zeilen durch die Eigenschaft ErrorMessage.background gebunden wird. Wie kann ich dies tun? Vielen Dank im Voraus!

10voto

Evan Hutnick Punkte 534

Eine andere Methode besteht darin, einen RowStyle zu verwenden, der eine Bindung von Ihrer Klasse hat. Um zu vermeiden, dass Sie einen Konverter oder sogar ein Ereignis verwenden müssen, ändern Sie Ihren ErrorMessage-Code in etwas wie dieses:

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 fügen Sie diese Ressource hinzu:

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

Und bei RadGridView:

RowStyle="{StaticResource xGridViewRowStyle}"

Ein etwas anderer Ansatz, aber ich habe es gerade getestet und es funktioniert definitiv :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X