2012-05-28 68 views

回答

8

去一個視圖模型結合兩種:

public class ViewModelA { 
    public ObservableCollection<CustomClass> Items { get; set; } 
    /* properties, etc. */ 
} 

public class ViewModelB { 
    /* properties, etc. */ 
} 

public class CombiningViewModel { 
    public ViewModelA A { get; set; } 
    public ViewModelB B { get; set; } 
} 

結合可以像

完成
<DataGrid ItemsSource="{Binding A.Items}"> 
    <!-- Sample, not complete --> 
</DataGrid> 
+0

+1我也將在這個實例中使用複合ViewModel。 –

0

您可以爲每個DataGrid而不是容器視圖設置DataContext。

<Grid> 
    <DataGrid ... DataContext="..." /> 
    <DataGrid ... DataContext="..." /> 
</Grid> 

或者不使用的DataContext並綁定到模型直接

<DataGrid ItemsSource="{Binding Source={StaticResource ...}}" /> 
1

不,不是直接。你有選擇,但:

你可以設置視圖本身的DataContext的,然後暴露每個視圖模型通過一個單獨的屬性並綁定到這些屬性:

public class MyView : Window 
{ 
    public MyView() 
    { 
     this.DataContext = this; 
    } 

    public ViewModel1 FirstViewModel { get; set; } 

    public ViewModel2 SecondViewModel { get; set; } 

} 

或者你可以做一個包裝視圖模型,其或者擴展(繼承自其中一個視圖模型),或者將它們包裝並表面適當的屬性:

public class MyCompositeViewModel 
{ 
    public ViewModel1 FirstViewModel { get; set; } 

    public ViewModel2 SecondViewModel { get; set; } 
} 
相關問題