J'essaie de lier une liste d'objets à un DataGrid sur l'infrastructure compacte. Voilà ce que j'ai:Liste de liaison de l'objet à DataGrid
public class Order
{
//Other stuff
public Customer Customer
{
get { return _customer; }
}
}
public class Customer
{
//Other stuff
public string Address
{
get { return _address; }
}
}
Maintenant, je veux lier le DataGrid à une liste de l'ordre et afficher les propriétés que certains (l'adresse du client est l'un d'entre eux):
List<Order> orders = MethodThatGetsOrders();
datagrid.DataSource = orders;
datagrid.TableStyles.Clear();
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = orders.GetType().Name; //This works OK
DataGridTextBoxColumn tb = new DataGridTextBoxColumn();
tb.MappingName = orders.GetType().GetProperty("Customer").GetType().GetProperty("Address").Name; //Throws NullRef
ts.GridColumnStyles.Add(tb);
datagrid.TableStyles.Add(ts);
Comment puis-je afficher l'adresse du client sur le DataGridTextBoxColumn?
Merci
référence: http://www.dofactory.com/net/adapter-design-pattern –
Thx pour l'entrée, je devrais faire une autre classe pour cela. Est-il un moyen d'associer la propriété Address à la TextBoxColumn MappingName? –
Bien sûr il y a un moyen cependant si vous écrivez cet adaptateur vous pouvez lier automatiquement ... peut-être même en utilisant 2 INotifyPropertyChanged ... c'est bien plus facile ... La classe ne délègue ses appels qu'à la référence transmise par le constructeur donc ça ne consomme pas beaucoup de mémoire si c'est ce que tu as peur. –