2012-05-28 17 views

cevap

8

Git bir DataContext'i ve Bağla kullanmayın:

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

gibi yapılabilir Bağlanma
<DataGrid ItemsSource="{Binding A.Items}"> 
    <!-- Sample, not complete --> 
</DataGrid> 
+0

+1 Ayrıca bu durumda bileşik bir ViewModel için gider. –

0

Kapsayıcı görünümünden ziyade DataContext'i her bir DataGrid için ayarlayabilirsiniz.

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

Veya her ikisi birleştiren bir görünüm modeli için model doğrudan

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

Hayır, doğrudan değil.

Sen, o zaman ayrı bir özelliği aracılığıyla her ViewModel teşhir ve bu özelliklere bağlanmak kendisine bakış DataContext ayarlayabilirsiniz: Gerçi seçenekleri var

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

    public ViewModel1 FirstViewModel { get; set; } 

    public ViewModel2 SecondViewModel { get; set; } 

} 

Veya bir sarıcı ViewModel yapabiliriz ki ya (devralır) ViewModels birine uzanır ya da her ikisini de sarar ve uygun özelliklere yüzeyleri:

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

    public ViewModel2 SecondViewModel { get; set; } 
} 
İlgili konular