WPF TreeView с привязкой данных к иерархическим данным - PullRequest
0 голосов
/ 04 марта 2012

Я новичок в методологии MVVM и WPF и пытаюсь разработать бизнес-приложение, используя его.Я закончил со следующей структурой кода, чтобы получить древовидное представление с несколькими узлами типа

. У меня есть древовидная структура, определенная в пользовательском элементе управления следующим образом:в файле кода:

public TreeCtrlView()
    {
        InitializeComponent();
        treeView1.DataContext = new ViewModels.TreeViewModel();
    }

Модели данных выглядят следующим образом:

class TreeViewModel : ViewModelBase
{
    public ObservableCollection<ClientViewModel> Clients;

    public TreeViewModel()
    {
        var v = from client in DataModel.GetAllClients() select new ClientViewModel(client);

        Clients = new ObservableCollection<ClientViewModel>(v.ToList());
    }
}
class ClientViewModel : ViewModelBase
{
    private Client _client;
    private List<ProductViewModel> _products;

    public string Name { get { return _client.ClientName; } }
    public string Address { get { return _client.Address; } }
    public string City { get { return _client.City; } }
    public string State { get { return _client.State; } }
    public string PinCode { get { return _client.PinCode; } }
    public string ServiceTaxNumber { get { return _client.ServiceTaxNumber; } }
    public string ContactPerson { get { return _client.ContactPerson; } }
    public string ContactNumber { get { return _client.ContactNumber; } }
    public List<ProductViewModel> Products { get { return _products; } }

    public ClientViewModel(Client client)
    {
        _client = client;
        _products = new List<ProductViewModel>(from product in DataModel.GetClientProducts(client)
                                               select new ProductViewModel(product));
    }
}

class ProductViewModel : ViewModelBase
{
    Product _product;

    public long ID { get { return _product.ProductID; } }
    public string Name { get { return _product.Name; } }
    public decimal? Price { get { return _product.MRP; } }

    public ProductViewModel(Product product)
    {
            _product = product;
    }
}

К сожалению, в раскрывающемся списке ничего не видно, кроме узла Majestic без знака +.

1 Ответ

0 голосов
/ 19 мая 2012

Решение вашей проблемы с иерархической привязкой данных здесь:

public class Order {
    private readonly string _instrument;
    private readonly double _price;
    private readonly long _quantity;

    public Order(string instrument, double price, long quantity) {
        _instrument = instrument;
        _price = price;
        _quantity = quantity;
    }

    public string Instrument {
        get { return _instrument; }
    }

    public double Price {
        get { return _price; }
    }

    public long Quantity {
        get { return _quantity; }
    }

    public void PopulateGrid(Grid grid) {
        BindingList<Order> orders = new BindingList<Order>();

        orders.Add(new Order("Instrument1", 10.55, 34));
        orders.Add(new Order("Instrument2", 12.26, 154));
        orders.Add(new Order("Instrument1", 13.16, 14));
        orders.Add(new Order("Instrument5", 9.85, 52));
        orders.Add(new Order("Instrument1", 16.47, 11));

        grid.DataSource = orders;
    }
}
...