2011-03-29 14 views
11

Estoy tratando de construir una pequeña aplicación de prueba MVVM, pero realmente no puedo entender cómo mostrar mi control de usuario en MainWindow.¿Cómo puedo mostrar mi control de usuario en MainWindow?

Mi Explorador de soluciones:

How my solution looks like

Tengo un diccionario de recursos:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:vm="clr-namespace:MVVM.ViewModel" 
    xmlns:vw="clr-namespace:MVVM.View"> 

    <DataTemplate DataType="{x:Type vm:ViewModel}"> 
     <vw:View /> 
    </DataTemplate> 

</ResourceDictionary> 

Tengo mi punto de vista:

<UserControl x:Class="MVVM.View.View" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <UserControl.Resources> 
     <DataTemplate x:Key="PersonTemplate"> 
      <StackPanel> 
       <TextBlock Text="{Binding FirstName}" /> 
      </StackPanel> 
     </DataTemplate> 
    </UserControl.Resources> 

    <ListBox ItemsSource="{Binding Path=Persons}" 
      ItemTemplate="{StaticResource PersonTemplate}" /> 
</UserControl> 

y Mi MainWindow

<Window x:Class="MVVM.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:vm="clr-namespace:MVVM.ViewModel" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <ResourceDictionary Source="MainWindowResources.xaml" /> 
    </Window.Resources> 

    <Grid> 

    </Grid> 
</Window> 

Respuesta

10

la manera más obvia y más fácil es agregar el elemento ContentControl:

<Grid> 
    <ContentControl x:Name="mainContentControl" /> 
</Grid> 

Y después de que establezca la propiedad Content de este control a su modelo de vista, y se cargará la vista correspondiente y se aplica de forma automática:

this.mainContentControl.Content = new ViewModel.ViewModel(); 

pero preferiría utilizar otra manera sin DataTemplates:

<Grid> 
    <vw:View x:Name="mainView"/> 
</Grid> 
this.mainView.DataContext = new ViewModel.ViewModel(); 
5

Cree su solución VS2010, luego, vaya a XAML de su MainWindow.

A la izquierda, hay una barra de herramientas con el botón "Caja de herramientas"

abrirlo, que contiene todos los posibles WPF controla usted podría agregar a su interfaz de usuario

Su control de usuario debe aparecer en la parte superior de la lista (probablemente en una categoría denominada "Controles" MVVM), sólo tienes que arrastrar & caer a su interfaz de usuario :)

+0

Sí, tienes razón. Solo el mío no aparece. –

+0

¿Qué quiere decir con que no aparece la caja de herramientas o que el control de usuario no aparece en la lista? – Damascus

+0

No aparece en la caja de herramientas. –

Cuestiones relacionadas