Привязка фона (цвет) для всего ряда телерика: Gridviewdatacontrol WPF Control
-
02-10-2019 - |
Вопрос
У меня есть следующий класс:
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");
}
}
}
}
И я обязательно связываю список ошибок для Teleerik Gridviewdatacontrol WPF Control:
<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>
Мне бы хотелось весь цвет фона каждого ряда, который должен быть связан с Errormessage. Как мне это сделать? Заранее спасибо!
Решение
Другой метод состоит в том, чтобы использовать rowstyle, который имеет привязку от вашего класса. Чтобы избежать необходимости использовать любой преобразователь или даже событие, измените свой код ошибки к чему-то вроде этого:
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");
}
}
}
А затем добавьте этот ресурс:
<Style x:Key="xGridViewRowStyle"
TargetType="telerik:GridViewRow">
<Setter Property="Background"
Value="{Binding background}" />
</Style>
А на RadgridView:
RowStyle="{StaticResource xGridViewRowStyle}"
Слегка другой подход, но только что проверил его, и это определенно работает. :)
Не связан с StackOverflow