MVVM質疑的Windows PhoneMVVM - 在單頁/綁定列表如何設置的MainView和ItemView控件模型和建立數據綁定
假設你想有多個列表中的視圖模型,並有說有一個數據透視表每個面板中的不同列表框。爲了說明的目的,我們可以說我們在單個頁面中有兩個用於人員和地點的列表框,但在不同的面板上。 (PeopleList和PlacesList)
你如何設置你的ViewModels。每個列表是否有一個MainViewModel?一個包含兩個列表的MainViewModel?我希望能夠根據他們的選擇導航到適當的詳細信息頁面詳細信息頁面。
其次,如何在加載表單時將每個列表框綁定到不同的viewmodel。
我的疑惑是,例子似乎表明,當一個窗體被加載時,你將上下文設置爲一個「靜態變量」,而不知道如何指定每個列表框的不同源。
下面是一些示例代碼片段...有問題嗎?
DataContext = App.ViewModel ;
public class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
this.Items = new ObservableCollection<ItemViewModel>();
//?? can you have more than one of these?
}
//?? should I have Public MainViewModel2() with this.Items = new OC<IVM2>
//...
/// Creates and adds a few ItemViewModel objects into the Items collection.
/// </summary>
public void LoadData()
{
this.Items.Add(new ItemViewModel() { VAR1 = "X", VAR2 = "Y"}) ;
<Grid x:Name="LayoutRoot" Background="Transparent" >
<!--Pivot Control-->
<controls:Pivot x:Name="Pivot" Title="MyApp" DataContext="{Binding}" Loaded="Pivot_Loaded">
<!--Pivot item one-->
...
<!--Pivot item two-->
<controls:PivotItem Header="people">
<Grid>
<ListBox x:Name="PeopleList" Height="442" HorizontalAlignment="Left" Margin="46,68,0,0" VerticalAlignment="Top" Width="346" ItemsSource="{Binding ItemsA}" SelectionChanged="ListBox1_SelectionChanged" />
</Grid>
<!--Pivot item three-->
<controls:PivotItem Header="places">
<Grid>
<ListBox x:Name="PlacesList" Height="442" HorizontalAlignment="Left" Margin="46,68,0,0" VerticalAlignment="Top" Width="346" ItemsSource="{Binding ItemsB}" SelectionChanged="ListBox2_SelectionChanged" />
</Grid>
這非常有幫助。 – 2011-01-30 17:09:25