Comment obtenez-vous le contenu d'une seule cellule d'une boîte à outils WPF DataGrid en C #? P>
Par le contenu, je veux dire un texte brut pouvant être là-bas. P>
3 Réponses :
Normalement, le contenu d'une cellule DataGrid est liée à la base de données et reflète donc l'état d'une propriété (dans la plupart des cas) d'un objet qui est affiché dans une rangée donnée. Par conséquent, avoir dit que (le modèle d'accès pas vue) ma question est la suivante: qu'est-ce que vous essayez de faire? Êtes-vous à la recherche de
Par exemple, avec une forme de formulaires DataGridView, vous pouvez faire quelque chose comme ceci: String CellContent = DataGridView1.Rows [0] .Cells [1] .tostring ();
Comment pouvez-vous faire quelque chose de similaire avec un DataGrid WPF?
Et oui, je veux pouvoir obtenir une cellule par l'index de ligne et de colonne.
Je cherche quelque chose comme ça aussi. Un bon exemple est que, dans DataGridView, vous pourriez faire une copie générique et coller de cette façon, mais cela semble être impossible dans WPF DataGrid. Quelqu'un a-t-il une perspicacité si cela pourrait être possible dans la prochaine version de WPF DataGrid?
Suivre ce que Phillip a dit - le Le DataGrid code> est généralement lié aux données. Ci-dessous est un exemple où mon document code> DataGrid code> est lié à un
Observablecollection
PersonName code> est composé d'un
prénom Code> et
Nom code> (les deux chaînes).
DataGrid code> prend en charge la création automatique de la colonne afin que l'exemple soit assez simple. Vous verrez que je peux accéder aux lignes par leur index et obtenir la valeur d'une cellule dans cette ligne en utilisant le nom de la propriété correspondant au nom de la colonne. P>
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; }
}
}
}
Merci! Je savais qu'il devait y avoir une manière ... un peu plus compliqué, puis un datagridview des formulaires mais WPF n'est pas aussi mature que des formes.
Aucun problème. Je pense que le Datagramrid Xece (tierce partie) utilise la construction DataGridView.
String publique FirstName {Obtenir; ensemble; } String Public String Nom {Obtenir; ensemble; } code> converti en propriété automatique: D
Si vous vous moquez d'utiliser un jeu de données, vous pouvez obtenir la propriété DataRow de la propriété de l'élément de la ligne.
DataRowView rowView = e.Row.Item as DataRowView;
Je sais que cela pourrait sembler simple pour certains, mais je suis nouveau à WPF et j'essaie de faire quelque chose comme des formulaires avec un DataGridView et n'avez rien fait de similaire. Donc, une solution détaillée serait vraiment appréciée!
Peut-être que ce n'est pas si simple après tout ...
Je pense que je vais simplement utiliser un DataGridView de formulaires à l'aide de WindowsformSIntegration ...