2015-03-18 2 views
0

Я относительно новичок в WPF, и я пытаюсь показать некоторые данные в ListView.Binding Model и ViewModel для DataTemplate

У меня есть класс модели Order, который я хочу просто показать на ListView. Но я хочу также показать некоторые другие расчетные данные (например, количество Positions внутри заказа).

Как добиться, чтобы использовать OrderViewModel (ViewModel), а не Order (модель) класса для DataTemplate в ListView?

Скажите, пожалуйста, если вам нужна дополнительная информация.

Спасибо заранее!

класс Order

Это мой класс заказа. Он содержит некоторую информацию, но не все, что я хочу показать в ListView.

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; } 
    } 
} 

Заказать ViewModel

Этот класс является ViewModel я хочу показать на ListView.

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 
} 

XAML из ListView

<ListView x:Name="orderListView" ItemsSource="{Binding Path=AvailableOrders}" Margin="0,54,0,0" SelectionMode="Single" 
       SelectedItem="{Binding Path=SelectedOrder}" > 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text="{Binding Number}" /> 
        <TextBlock Text="{Binding AmountOfPositions}" // This does not work! /> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 
+1

I think..In свойство Добавить получить, а также набор и RaisePropertyChange уведомить его о представлении –

+0

какого типа AvailableOrders. –

+0

@JustinCI Я не могу связать свойство AmountOfPosition, потому что класс Model не получил это свойство. ListView использует MODEL напрямую, а не ModelView (OrderViewModel) –

ответ

Смежные вопросы