2010-01-15 5 views
2

Je sais que la liaison dans WPF est une fonctionnalité vraiment puissante, mais je ne sais pas si c'est possible.Est-il possible de lancer une autre vue en utilisant XAML seulement quand on clique sur le bouton?

Ma fenêtre est composée d'une grille très simple:

<Grid Height="593" Width="800" > 
    <Grid.RowDefinitions> 
     <RowDefinition Height="109*" /> 
     <RowDefinition Height="484*" /> 
    </Grid.RowDefinitions> 
    <Grid.Background> 
     <ImageBrush ImageSource="MenuBackground.png" /> 
    </Grid.Background> 

    <Label Grid.Row="0" 
      HorizontalAlignment="Center" VerticalAlignment="Center" 
      FontSize="36" Foreground="Gray" 
      Margin="0,15,0,0"> 
     Bindings Sandbox 
    </Label> 

    <Grid Grid.Row="1" Width="300" Height="200"> 
     <Grid.RowDefinitions> 
      <RowDefinition /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 

     <Button Grid.Row="0" Margin="5" FontSize="16">Slider and Progress Bar</Button> 
     <Button Grid.Row="1" Margin="5" FontSize="16">Button2</Button> 
    </Grid> 
</Grid> 

Je veux savoir s'il est possible d'appeler une autre fenêtre (disons défini dans View1.xaml) sans routage du Button.Click incode- derrière?

+0

Que voulez-vous faire avec/avec View1? l'ouvrir dans une nouvelle fenêtre? ou est-ce un contrôle utilisateur dans la fenêtre principale de votre application? – kenwarner

+0

Ouvrir dans une nouvelle fenêtre. –

Répondre

1

Vous avez quelques options ici. Techniquement, vous pouvez créer un attached property qui fait ce que vous voulez. Cela utiliserait le code, mais pas dans le code derrière, donc il fournit une option plus réutilisable.

Vous pouvez également utiliser un Command au lieu d'un gestionnaire d'événements. Cela vous permet de lier à la commande et de déplacer la logique dans votre DataContext. (Ceci, btw, est l'un des "outils" qui fait que le modèle MVVM fonctionne correctement.) La commande pourrait ouvrir votre nouvelle vue.

+1

J'aime l'option de commande plus. Merci d'avoir fait remarquer cela. –

+0

C'est aussi ma préférence personnelle, mais ce sont les deux options que j'ai utilisées. –

+0

si vous l'aimez pourquoi ne pas le marquer? –

Questions connexes