Frage

Ich versuche, die Vordergrundfarbe einer DataGridcell, nicht die gesamte Zeile, angesichts des Werts des spezifischen Zellinhalts zu ändern. Wenn der Datumswert der Zelle beispielsweise veraltet ist, möchte ich den Vordergrund auf Rot setzen. Ich bin fast dort, wo ich Multibinding benutze, um zwei Werte aus dem Datengitter zu extrahieren und es durch Wertkonverter zu analysieren, was Imultivalueconverter implementiert.

Kurz gesagt, und ohne dann muss ich in den Konverter selbst gehen, habe ich das folgende XAML geschrieben: `

    <Style x:Key="CellHighlighterStyle">
        <Setter Property="my:ExtendedDataGrid.Foreground">
            <Setter.Value>
                <MultiBinding Converter="{StaticResource cellHighlighterConverter}">
                    <MultiBinding.Bindings>
                        <Binding RelativeSource="{RelativeSource self}"/>
                        <Binding Path="Row" Mode="OneWay"/>
                    </MultiBinding.Bindings>
                </MultiBinding>
            </Setter.Value>
        </Setter>            
    </Style>

I then added to my Datagrid :Cellstyle = "{staticResource cellHighlighterStyle}" `.

Jetzt sieht mein Konverter den ersten Value[0] Eigenschaft als DataGridcell, aber der zweite Wert ist eine Art von DependentyProperty. Es ist, als hätte es eine Standard- oder Dummy -Eigenschaft erstellt, wenn ich tatsächlich die Zeile bekommen möchte. Tatsächlich möchte ich das Klassenobjekt wirklich mit dieser Zeile assoziieren lassen. Mein Datagrid ist an a gebunden List<of a class object>.

Ich bin sicher, dass ich nur wenige Zentimeter entfernt bin. Wie analysiere ich entweder die DataGrid -Zeile, damit ich den Wert des Feldes extrahieren kann, oder das Objekt, das an diese Zeile oder Spalte gebunden ist, damit ich die Farbe zurücksenden kann, die ich zurückgeben möchte? Oder gibt es einen besseren Weg für mich, die Eigenschaften einer Datagridzelle selektiv zu ändern?

War es hilfreich?

Lösung

Der DataContext der Zelle sollte das Datenobjekt der Zeile sein. Versuchen Sie, die zweite Bindung darauf zu ändern:

<Binding />

Die direkt an den DataContext bindet.

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