Ich habe Schwierigkeiten, eine Zelle Hintergrundfarbe basierend auf einem Unbound-Feld (mit nicht-einfachen Backend-Struktur) unter Struktur zu ändern. Hier ist die Probe „Komplex“ Struktur:WPF ändern Zelle Hintergrundfarbe basierend auf Inhalt
public class TestTable
{
public int order { get; set; }
public TestMember t1 { get; set; }
public TestMember t2 { get; set; }
public TestMember t3 { get; set; }
}
public class TestMember
{
public TestMember(String i)
{
value = i;
}
public String value { get; set; }
}
und das ist das XAML:
<igDP:XamDataGrid Name="xamDataGrid1">
<igDP:XamDataGrid.ViewSettings>
<igDP:GridViewSettings UseNestedPanels="False"/>
</igDP:XamDataGrid.ViewSettings>
<igDP:XamDataGrid.FieldSettings>
<igDP:FieldSettings AllowRecordFiltering="true" FilterLabelIconDropDownType="MultiSelectExcelStyle"
AllowEdit="False" AllowFixing="No" AllowSummaries="True"/>
</igDP:XamDataGrid.FieldSettings>
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False" FilterUIType="LabelIcons"
HeaderPrefixAreaDisplayMode="FieldChooserButton" AllowClipboardOperations="All"
CopyFieldLabelsToClipboard="True" AddNewRecordLocation="OnTopFixed"
AllowAddNew="False" HighlightAlternateRecords="False" ExpansionIndicatorDisplayMode="Never"
/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout Key="Layout0">
<igDP:FieldLayout.SortedFields>
<igDP:FieldSortDescription FieldName="order" Direction="Ascending"></igDP:FieldSortDescription>
</igDP:FieldLayout.SortedFields>
<igDP:FieldLayout.Fields>
<igDP:Field Name="order" Label="Ordinamento" AllowGroupBy="False" Visibility="Collapsed" FixedLocation="FixedToNearEdge"/>
<igDP:UnboundField BindingMode="TwoWay" BindingPath="t1.value" Name="value" AllowEdit="True" Label="Anno Recoil" AllowGroupBy="False" FixedLocation="FixedToNearEdge"/>
<igDP:UnboundField BindingMode="TwoWay" BindingPath="t2.value" Name="value" AllowEdit="True" Label="APC" FixedLocation="FixedToNearEdge"/>
<igDP:UnboundField BindingMode="TwoWay" BindingPath="t3.value" Name="value" Label="R1" AllowEdit="True" FixedLocation="FixedToNearEdge"/>
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
Was ich ein farbiges Gitter bekommen möchten, dass die Zellen sind schwarz nur, wenn der Wurzelwert ist null, nicht wenn der Blattwert null ist.
Das angezeigte Raster ist das Ergebnis der Generierung der zweiten Spalte Zeilen ein neues TestMember mit dem Wert auf Null festgelegt. Ich möchte, dass sie nicht schwarz gefärbt und anders behandelt werden. Ich habe müde diesen Konverter:
<igDP:XamDataGrid.Resources>
<Style TargetType="{x:Type igDP:CellValuePresenter}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource BackGroundConverter}">
<Binding RelativeSource="{RelativeSource Self}" Path="Value" />
<Binding RelativeSource="{RelativeSource Self}" Path="DataContext"/>
<Binding RelativeSource="{RelativeSource Self}" />
<Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Value" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</igDP:XamDataGrid.Resources>
Und was ist passiert, dass die CellValuePresenter an den Mehrwert-Umwandler geleitet kein Feld, wenn das Blatt Wert null ist, so kann ich nicht eine elegante Art und Weise finde abzurufen, in dem angebracht haben Spalte Der Wert ist null (entweder, weil root null ist oder leaf null ist) und erstellt eine Logik, um die Zelle richtig zu färben.
Vielen Dank im Voraus, hinterlassen Sie einen Kommentar, wenn ich das Problem nicht richtig erklärt habe.
Nochmals vielen Dank.