DataTemplate的绑定模型和ViewModel

时间:2015-03-18 10:55:55

标签: c# wpf mvvm

我对WPF比较陌生,我尝试在ListView中显示一些数据。

我有一个Model类Order,我只想在ListView上显示。但我想展示一些其他计算的信息(例如订单中Positions的数量)。

如何使用OrderViewModel({1}}的{​​{1}}来使用Order(ViewModel)而非DataTemplate(模型)类?

如果您需要更多信息,请告诉我。

提前谢谢!

订购类

这是我的订单类。它包含一些信息,但不包含我想在ListView上显示的所有信息。

ListView

订购ViewModel

这个类是我要在ListView上显示的ViewModel。

public class Order
{
    private int number;
    private ObservableCollection<Position> positions;


    /// <summary>
    /// Default Constructor
    /// </summary>
    public Order()
    {
        this.positions = new ObservableCollection<Position>();
    }

    /// <summary>
    /// Order Number
    /// </summary>
    public int Number
    {
        get { return number; }
        set { number = value; }
    }

    /// <summary>
    /// Positions inside the order.
    /// </summary>
    public ObservableCollection<Position> Positions
    {
        get { return positions; }
        set { positions = value; }
    }
}

ListView的XAML

public class OrderViewModel : ViewModelBase
{
    readonly private Order order;

    #region Constructor

    public OrderViewModel(Order order)
    {
        this.order = order;
    }

    #endregion Constructor

    #region Order Properties

    public string Number
    {
        get { return order.Number.ToString(); }
    }

    public ObservableCollection<Position> Positions
    {
        get
        {
            return order.Positions;
        }
    }

    #endregion Order Properties

    #region Presentation Properties

    public int AmountOfPositions // Calculated value should be shown on the ListView.
    {
        get { return order.Positions.Count; }
    }

    #endregion Presentation Properties
}

1 个答案:

答案 0 :(得分:-1)

  1. 您需要将{XAML set the DataContext添加到viewmodel。
  2. 您需要raise the property changed最终通过ViewModelBase公开的事件