Wie erhalten Sie den Inhalt einer einzelnen Zelle eines WPF-Toolkits DataGrid in C#?WPF DataGrid: Wie erhalten Sie den Inhalt einer einzelnen Zelle?
Mit Inhalt meine ich etwas Klartext, der drin sein könnte.
Wie erhalten Sie den Inhalt einer einzelnen Zelle eines WPF-Toolkits DataGrid in C#?WPF DataGrid: Wie erhalten Sie den Inhalt einer einzelnen Zelle?
Mit Inhalt meine ich etwas Klartext, der drin sein könnte.
Nach was Phillip sagte - die DataGrid
ist in der Regel datengebunden. Unten ist ein Beispiel, wo mein WPF DataGrid
an einen ObservableCollection<PersonName>
gebunden ist, wo ein PersonName
besteht aus einem FirstName
und LastName
(beide Strings).
Die DataGrid
unterstützt automatische Spaltenerstellung, so das Beispiel ist recht einfach. Sie werden sehen, dass ich auf Zeilen über ihren Index zugreifen und den Wert einer Zelle in dieser Zeile abrufen kann, indem Sie den Namen der Eigenschaft verwenden, die dem Spaltennamen entspricht.
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
// Create a new collection of 4 names.
NameList n = new NameList();
// Bind the grid to the list of names.
dataGrid1.ItemsSource = n;
// Get the first person by its row index.
PersonName firstPerson = (PersonName) dataGrid1.Items.GetItemAt(0);
// Access the columns using property names.
Debug.WriteLine(firstPerson.FirstName);
}
}
public class NameList : ObservableCollection<PersonName>
{
public NameList() : base()
{
Add(new PersonName("Willa", "Cather"));
Add(new PersonName("Isak", "Dinesen"));
Add(new PersonName("Victor", "Hugo"));
Add(new PersonName("Jules", "Verne"));
}
}
public class PersonName
{
private string firstName;
private string lastName;
public PersonName(string first, string last)
{
this.firstName = first;
this.lastName = last;
}
public string FirstName
{
get { return firstName; }
set { firstName = value; }
}
public string LastName
{
get { return lastName; }
set { lastName = value; }
}
}
}
Danke! Ich wusste, dass es einen Weg geben musste ... Ein bisschen komplizierter als ein DataGridView von Forms, aber WPF ist nicht so ausgereift wie Forms. – Partial
Kein Problem. Ich denke, das Xceed (Drittanbieter) DataGrid verwendet das DataGridView-Konstrukt. –
'public string Vorname {get; einstellen; } öffentliche Zeichenkette Nachname {get; einstellen; } ' In Auto-Eigenschaft konvertieren: D – TheGeekZn
Normalerweise ist der Inhalt einer DataGrid-Zelle datengebunden und spiegelt daher den Status einer Eigenschaft (in den meisten Fällen) eines Objekts wider, das in einer bestimmten Zeile angezeigt wird. Daher könnte es einfacher sein, auf das Modell als auf die Ansicht zuzugreifen.
Nachdem ich gesagt habe (Access-Modell nicht anzeigen) meine Frage ist: Was versuchst du zu tun? Suchen Sie nach Möglichkeiten, den visuellen Baum zu durchlaufen, um das Steuerelement (oder die Steuerelemente) zu finden, die auf dem Bildschirm gerendert werden? Wie erwarten Sie, nach Zeilen- und Spaltenindex auf die Zelle zu verweisen?
Zum Beispiel mit einem Forms DataGridView können Sie etwas tun: String CellContent = dataGridView1.Rows [0] .Cells [1] .ToString(); – Partial
Wie können Sie etwas Ähnliches mit einem WPF-Datagrid machen? – Partial
Und ja, ich möchte in der Lage sein, eine Zelle nach Zeilen- und Spaltenindex zu bekommen. – Partial
Wenn Sie mithilfe einer DataTable binden, können Sie DataRowView aus der Item-Eigenschaft der Zeile abrufen.
Ich weiß, es klingt vielleicht einfach für einige, aber ich bin neu in WPF und habe versucht, etwas wie in Forms mit einem DataGridView zu tun und habe nichts ähnliches getan. So würde eine detaillierte Lösung wirklich geschätzt werden! – Partial
Vielleicht ist es nicht so einfach nach allem ... – Partial
Ich denke, ich werde nur ein DataGridView von Forms mit Hilfe von WindowsFormsIntegration ... – Partial