2009-07-29 13 views
1

In WPF möchte ich eine Schaltfläche haben, die beim Klicken entweder ein Popup öffnet oder schließt, je nachdem, ob es bereits geöffnet ist (Schließen, wenn es geöffnet ist, Öffnen, wenn es geschlossen ist) und I möchte das rein in XAML machen. Ist das möglich?WPF-Popup-Schaltfläche Frage

Danke,
Roy

Antwort

6

Ja, Sie werden eine ToggleButton eher als eine Standard-Schaltfläche verwenden müssen. Dann sollten Sie in der Lage sein, die Popup.IsOpen-Eigenschaft an die ToggleButton.IsChecked-Eigenschaft zu binden.

Wenn Sie ein XAML-Snippet benötigen, das dies demonstriert, kann ich es in ein paar Minuten erstellen. Aber das sollte einfach genug sein.

+0

ist ein Beispiel für diese Technik: http://stackoverflow.com/questions/361209/how-to-open-a-wpf-popup-when-another-control-is-clicked-using- xaml-markup-only/399824 # 399824 –

1

Hier ist eine nice solution zu der Frage implementiert als Verhalten und damit unabhängig von Code hinter dem ViewModel.

0

Ich löse gerade dieses Problem, gerade wie @Charlie sagte. Hier ist mein Code in einer page.xaml Datei. Hier

<ToggleButton Name="MenuButton" Width="120" Height="40"/> 
      <Popup Width="130" Height="150" PlacementTarget="{Binding ElementName=MenuButton}" Placement="Bottom" AllowsTransparency="True" PopupAnimation="Fade" IsOpen="{Binding ElementName=MenuButton,Path=IsChecked}" StaysOpen="False"> 
       <Border Background="Black" CornerRadius="10"> 
        <Grid > 
         <Grid.RowDefinitions> 
          <RowDefinition /> 
          <RowDefinition /> 
          <RowDefinition /> 
         </Grid.RowDefinitions> 
         <Grid Grid.Row="0"> 
          <Button Content="Log" Width="120" Height="40"/> 
         </Grid> 
         <Grid Grid.Row="1"> 
          <Button Content="Shut Down" Width="120" Height="40"/> 
         </Grid> 
         <Grid Grid.Row="2"> 
          <Button Content="About..." Width="120" Height="40"/> 
         </Grid> 
        </Grid> 
       </Border> 
      </Popup>