2012-05-28 24 views

Trả lời

8

Go cho một mô hình quan điểm kết hợp cả hai:

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

ràng buộc có thể được thực hiện như

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

+1 Tôi cũng sẽ sử dụng một ViewModel tổng hợp trong trường hợp này. –

0

Bạn có thể đặt DataContext cho mỗi DataGrid thay vì cho chế độ xem vùng chứa.

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

Hoặc không sử dụng một DataContext và Bind để các mô hình trực tiếp

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

Không, không trực tiếp. Bạn không có tùy chọn mặc dù:

Bạn có thể đặt DataContext của quan điểm với chính nó, sau đó phơi bày mỗi ViewModel thông qua một tài sản riêng và liên kết với các thuộc tính:

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

    public ViewModel1 FirstViewModel { get; set; } 

    public ViewModel2 SecondViewModel { get; set; } 

} 

Hoặc bạn có thể làm cho một viewmodel wrapper mà hoặc mở rộng (kế thừa từ) một trong các mô hình chế độ xem hoặc kết thúc chúng cả hai và bề mặt các thuộc tính thích hợp:

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

    public ViewModel2 SecondViewModel { get; set; } 
} 
Các vấn đề liên quan