爲堆疊面板視圖創建視圖模型。在此視圖模型中公開塊視圖模型的集合。
將此集合綁定到像視圖中堆棧面板內的ItemsControl之類的東西。設置模板,以便用戶控件用於顯示每個項目。
ItemsControl實例化的每個控件都將與您的集合中的元素相關聯。這將導致每個用戶控件與其自己的視圖模型相關聯。
更新 - 這裏是一些代碼
主要頁面:
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding BlockViewModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:BlockView></local:BlockView>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
背後的主要頁面代碼:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
DataContext = new MainPageViewModel();
}
}
主要網頁瀏覽模式:
public class MainPageViewModel
{
public ObservableCollection<BlockViewModel> BlockViewModels
{
get;
private set;
}
public MainPageViewModel()
{
BlockViewModels = new ObservableCollection<BlockViewModel>();
BlockViewModels.Add(new BlockViewModel { CurrentBlock = new Block { Name = "Block 1", Price = 10 } });
BlockViewModels.Add(new BlockViewModel { CurrentBlock = new Block { Name = "Block 2", Price = 20 } });
}
}
模塊型號:
public class Block
{
public string Name
{
get;
set;
}
public int Price
{
get;
set;
}
}
塊視圖模型:
public class BlockViewModel
{
public Block CurrentBlock
{
get;
set;
}
}
塊視圖:
<Grid x:Name="LayoutRoot" Background="White">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CurrentBlock.Name}"></TextBlock>
<TextBlock Text=" - "></TextBlock>
<TextBlock Text="{Binding CurrentBlock.Price}"></TextBlock>
</StackPanel>
</Grid>
對不起,我真的不明白這一點?你可以發佈一些代碼片段嗎?我瞭解ItemsControl的一面。我在ViewModels列表上苦苦掙扎。我想把代碼放在這裏,但每次按下輸入它的帖子評論!我創建了3個塊對象。然後,我瀏覽了這些視圖並創建了3個視圖模型,並將其添加到我的列表中。當我嘗試這個時,我什麼也沒有顯示。在我的控制中,XAML的正確語法是什麼?另外,我假設我不需要設置DataContext? – Paul 2012-08-18 13:12:43
對不起,這是我與綁定的錯誤。當我在堆棧面板的視圖模型中創建視圖模型列表時,我假設它正確地創建一個新的視圖模型,然後將視圖模型的屬性設置爲當前塊?有沒有更好的方式來用較少的代碼來做到這一點? – Paul 2012-08-18 13:23:18
我添加了一些示例代碼來澄清事情。至於創建模型和視圖模型 - 這可能是一個單獨的主題。我們使用Unity來創建我們的視圖模型。由於WCF請求,我們的模型通常來自服務器。 – boris 2012-08-21 15:14:53