2012-05-28 13 views

Respuesta

8

ir para un modelo de vista la combinación de ambos:

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

vinculación puede realizarse como

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

+1 También me gustaría un ViewModel compuesto en esta instancia. –

0

Puede establecer el DataContext para cada DataGrid en lugar de para la vista de contenedor.

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

O no utilice un DataContext y se unen a los modelos directamente

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

No, no directamente. Usted tiene opciones sin embargo:

podría establecer el DataContext de la vista a sí mismo, a continuación, exponer cada modelo de vista a través de una propiedad separada y se unen a esas propiedades:

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

    public ViewModel1 FirstViewModel { get; set; } 

    public ViewModel2 SecondViewModel { get; set; } 

} 

O usted podría hacer un modelo de vista envoltorio que bien extiende (hereda de) uno de los modelos de vista, o los envuelve a ambos y muestra las propiedades apropiadas:

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

    public ViewModel2 SecondViewModel { get; set; } 
} 
Cuestiones relacionadas