WPF iteriert durch Datagrid

9

Verwenden von WPF C # .NET4.5 mit Visual Studio 2012 Ulti.

Alter winforms-Code:

%Vor%

Wie Sie jede Reihe sehen können, die ich durchlaufe, überprüfe ich eine bestimmte Zelle, wenn wahr, bevölkere ich dann eine andere Zelle. Dies war ein guter alter Winforms-Code, den ich schon oft benutzt habe. Das Umschalten auf WPF war viel mehr anders als ich vorher angenommen habe.

DataGrid enthält nicht die Eigenschaft Row . Stattdessen denke ich, dass Sie Folgendes verwenden müssen:

%Vor%

Aber ich bin immer noch ratlos, wer jetzt die Zelle bekommen soll.

Also meine Frage ist, gibt es Syntaxänderungen durchzuführen, wenn ja wo? Oder wie ich langsam glaube, dass Datagrids in WPF mit Objects mehr arbeiten als winforms und daher keine Eigenschaft namens "row" brauchen, wenn das der Fall ist, welche Logik / Syntax sollte ich in diesem Beispiel verwenden?

>

Vielen Dank für eure Geduld, Leute, denkt daran, wenn ich für die Feiertage nach Hause fahre, werde ich ein bisschen WPF graben, um zu sehen, wie anders es ist.

    
lemunk 28.03.2013, 15:52
quelle

5 Antworten

12

Ich glaube, du willst zuerst alle Zeilen deines DataGrid :

holen %Vor%

und dann iteriere durch dein Gitter:

%Vor%     
COLD TOLD 28.03.2013, 16:19
quelle
14

Die Leute scheinen das zu überkompensieren, das hat für mich funktioniert:

%Vor%     
Charles Clayton 13.01.2015 23:42
quelle
1

In WPF geht man viel dynamischer und objektorientierter vor. Sie können die Spalte "pNew" an eine Eigenschaft des Elements binden, das Sie in DataGrid einfügen, was einen Abwärtspfeil zurückgibt. Wenn sich der Wert ändert, können Sie das Ereignis PropertyChanged (Interface INotifyPropertyChanged ) auslösen und die gebundene Eigenschaft wird erneut ausgewertet.

Interessant für den Anfang mit WPF ist auch DataTemplate , ControlTemplate , Converter . Konverter ändert den Eigenschaftswert in einen verwendbaren Wert für WPF (z. B. BoolToVisibility), wenn die Eigenschaft aufgerufen wird. DataTemplate und ControlTemplate können verwendet werden, um das Aussehen des Controls zu ändern.

Es gibt einige gute Tutorials für WPF da draußen. Ich würde auch empfehlen, in das MVVM-Pattern zu schauen, um es als Zwischenschicht Ihres BusinessObjekts und Ihres WPF-Controls zu verwenden, insbesondere um Dinge zu handhaben, wie Sie es hier versuchen.

    
Patrick 28.03.2013 16:21
quelle
1

Ja, Sie haben Recht. WPF DataGrid ist darauf ausgelegt, die Verwendung von Objekten besser zu unterstützen.

Sie könnten ein ViewModel ähnlich dem folgenden verwenden. Erstellen Sie sie alle in einer Sammlung und legen Sie diese Sammlung dann als ItemsSource fest. Sie müssen auch einen ValueConverter verwenden, wenn Sie statt eines Häkchens für pNew als true / false anzeigen und ein Bild erstellen möchten.

%Vor%

Bearbeiten

Um es ein wenig zu vereinfachen, könnten Sie eine Basis-ViewModel-Klasse verwenden und PropertyChanged weben verwenden. Der Code würde dies vereinfachen:

%Vor%     
Nick Freeman 28.03.2013 16:35
quelle
-4

Warum können Sie nicht einfach diese Eigenschaft verwenden, um die Anzahl der Zeilen zu erhalten und dann eine For-Schleife zu durchlaufen?

%Vor%     
ChibaKun 28.12.2014 08:42
quelle

Tags und Links