[英]Binding Model and ViewModel for a DataTemplate
我對WPF比較陌生,我嘗試在ListView
顯示一些數據。
我有一個Model類Order
,我想簡單地顯示在ListView
。 但我還想顯示其他一些計算出的信息(例如訂單內的Positions
數量)。
如何實現對ListView
的DataTemplate
使用OrderViewModel
(ViewModel)而不是Order
(Model)類?
請告訴我您是否需要更多信息。
先感謝您!
訂單類別
這是我的訂單類。 它包含一些信息,但不是我想在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
此類是我要在ListView上顯示的ViewModel。
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
}
ListView的XAML
<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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.