Laden...

Und noch eine Frage zu DataGrid

Erstellt von Quaneu vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.312 Views
Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren
Und noch eine Frage zu DataGrid

Hallo zusammen,

ich habe eine DataGrid, mit einer DataGridCheckBoxColumn und sonst nur DataGridTextColumns. Die DataGridTextColumns besitzen alle ein Binding, so dass sie die Informationen der Objekte aus der ItemsSource anzeigen. Nur das DataGridCheckBoxColumn besitzt kein Binding, da die Objekte dafür kein Property haben. Dies will ich aber per Code setzen, doch ich finde einfach keinen Weg auf die CheckBoxen in der DataGridCheckBoxColumn zuzugreifen (diese Splate ist immer am Anfang der Tabelle).

Daher meine Frage, gibt es eine Möglichkeit per Code dieCheckBoxen in DataGridCheckBoxColumn zu setzen?

Gruß
Quaneu

5.299 Beiträge seit 2008
vor 13 Jahren

Kann sein, dasses möglich ist, scheint mir aber nicht sinnvoll.

Die Checkboxen werden sich ja auf irgendetwas in deinen DatenObjekten beziehen, und da ist es das einfachste und sinnvollste, die DatenObjekte um eine bool-Property zu erweitern, und daran zu binden.

Der frühe Apfel fängt den Wurm.

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren

Die CheckBox soll anzeigen (true), wenn sich ein Property des Objects ändert.

Dann werde ich wohl dem Objekt noch ein Property spendieren und daran binden.

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren

Leider ist es mir nicht möglich mein Objekt um dieses Property zu erweitern. Daher bleibt mir nur die manuelle Manipulation...

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo Quaneu,

die manuelle Manipulation ist nie gut.
Entweder du erstellst dir einen Converter der analysiert ob sich das Objekt geändert hat oder du fügst den Property ein Attached Property hinzu das im Prinzip das selbe macht.

Damit müsstest du auch an das Ziel kommen.
Weil mit dem manuellen rumgebastle machst du dir nur unnötige Probleme 😃

Grüsse
Michael

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren

Als erstes vielen Dank für eure Hilfe.

Das mit dem Converter verstehe ihc nicht so ganz, da ich ja dafür ein binding brauche. Jedoch habe ich noch kein Property auf das ich binden kann.
Das mit dem Attached Property werde ich gleich mal probieren.

Gruß
Quaneu

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren

Leider klappt dies auch nicht, mein Attached Property würde wie folgt aussehen:


public static readonly DependencyProperty IsModifiedProperty = DependencyProperty.RegisterAttached("IsModified", typeof(Boolean), typeof(UnitView), new PropertyMetadata(false));

public static void SetIsModified(UIElement element, Boolean value)
{
   element.SetValue(IsModifiedProperty, value);
}
public static Boolean GetIsModified(UIElement element)
{
   return (Boolean)element.GetValue(IsModifiedProperty);
}

Doch die Objekte die ich benutze sind keine UIElemente bzw. davon abgeleitet (auch nicht möglich). Daher fällt auch diese Möglichkeit weg und ich muss sie wohl per hand setzen... doch wie?

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

Doch die Objekte die ich benutze sind keine UIElemente bzw. davon abgeleitet (auch nicht möglich)

stimmt. Daran habe ich nicht gedacht 😃

Daher fällt auch diese Möglichkeit weg und ich muss sie wohl per hand setzen... doch wie?

Die Möglichkeit mit dem Converter funktioniert aber schon trotzdem.
Du bindest einfach das ganze Objekt an deine ComboBox mit dem Converter.
Im Converter kannst du dann die Operation mit deinem Objekt durchführen.

Daran musst du dann noch feststellen ob sich das Objekt geändert hat.
Wie du das machst bleibt dir überlassen, aber jedenfalls kriegst so das ganze Objekt in den Converter und kannst damit deine Kontrolle machen

Gruss
Michael

Quaneu Themenstarter:in
692 Beiträge seit 2008
vor 13 Jahren

Sorry, jetzt muss ich nochmal fragen, da selbst der Konverter scheitert (vielleicht auch nur an meinen Kenntnissen...)
Da ich im Konverter Daten aus anderen Klassen brauche um festztstellen ob sich etwas geänert hat und das bekomme ich nicht hin.

Jetzt wollte ich nur mal die Zeile farbig hervorheben, in der sich was geänedrt hat, doch ich schaffe es einfach nicht auf diese zuzugreifen...

Grüße
Quaneu

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

wenn dein Converter auch Daten aus anderen Klassen braucht dann hast du ein Problem...

Wenn du das unbedingt im Codebehind machen willst dann kannst du einfach den Cellstyle der betreffenden Row setzen.
Und darin deine Farbe angeben.

Aber wie gesagt gehört sowas nicht in den Codebehind

Gruss
Michael