J'ai donc une structure de classe comme celui-ciWPF TreeView liant par XAML
Store
Owner
Cashier
List of Products
Product Name
Price
List of Vendors
Company Name
Contact Name
Donc il y a 4 objets: Store, personne (propriétaire et caissier), produit et fournisseur.
Je veux trouver un moyen de lier cette structure dans un arbre XAML, de sorte que chaque noeud est représente un objet de cette structure comme:
image http://img23.imageshack.us/img23/9337/treexq.png
Jusqu'à présent, je n'ai pu à cela avec un objet supérieur -> un sous-objet. Comme ceci:
Store
- Departmen 1 Products
Book 1
Book 2
Book 3
- Department 2 Products
Bike 1
Bike 2
Bike 3
Donc, la différence est importante ici que dans le premier arbre, les sous-nœuds sont 3 types d'objets différents (magasin a 2 objets personne, 1 produit et 1 objets fournisseur); et dans le second, chaque nœud racine n'a qu'un seul type de sous-nœud (magasin a département, département a produits).
J'ai fait le deuxième exemple en utilisant HierarchicalDataTemplates, donc j'ai pensé que cela résoudrait mon problème, mais ce n'est pas le cas. Une idée sur comment je peux faire ça? Voici le code qui crée la structure de magasin:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
this.DataContext = new List<Store>() { Store.CreateStore() };
}
}
public class Store
{
public string StoreName { get; set; }
public Person Owner { get; set; }
public Person Cashier { get; set; }
public List<Product> Products { get; set; }
public List<Vendor> Vendors { get; set; }
public Store()
{
this.Products = new List<Product>();
this.Vendors = new List<Vendor>();
}
public static Store CreateStore()
{
Store store = new Store();
// set name
store.StoreName = "Book store";
// set staff
store.Owner = new Person() { FirstName = "John", LastName = "Smith" };
store.Cashier = new Person() { FirstName = "Jane", LastName = "Smart" };
// add products
store.Products.Add(new Product() { Name = "Mechanical Pencil", Price = 1.25m});
store.Products.Add(new Product() { Name = "Pen", Price = 2.50m });
store.Products.Add(new Product() { Name = "WPF Book", Price = 28.94m });
store.Products.Add(new Product() { Name = "ASP.NET Book", Price = 29.50m });
// add vendors
store.Vendors.Add(new Vendor() { CompanyName = "Bic", ContactName = "Bill Gates" });
store.Vendors.Add(new Vendor() { CompanyName = "O'Reilly", ContactName = "Steve Jobs" });
return store;
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
}
public class Vendor
{
public string CompanyName { get; set; }
public string ContactName { get; set; }
}
Je veux éviter de créer la structure d'arbre du côté de code. Toute aide est la bienvenue.
Ok, ça ressemble à ce dont j'ai exactement besoin. Je reviendrai vers toi. Merci!! – Carlo
Enfin eu le temps de tester cela. Fonctionne comme un charme, merci! – Carlo