Silverlight-Popup Dialog

otto fischer 23. January 2009 20:31

Silverlight-Popup

In jedem Programm wird früher oder später ein Popup benötigt. Entweder um Informationen anzuzeigen oder um Feedback vom Anwender einzuholen. Etwa: "Sie sind sich sicher, die Festplatte löschen zu wollen? Klicken Sie Ja, Nein."

Heute möchte ich Dir auf die Schnelle zeigen, wie Du ein Popup-Fenster unter Silverlight realisieren kannst.

Silverlight unterscheidet sich da nicht viel von anderen Programmierumgebungen. Auch wenn Sie nur ein Spiel und keine Business-Applikation erstellen wollen, kommen Sie bestimmt zu dem Punkt, an dem Sie sich über Popup-Fenster Gedanken machen müssen.

Wie immer gibt es unzählige Möglichkeiten ein Popup-Fenster zu erzeugen oder einfach nur ein Verhalten herzustellen, das wie ein Popup-Fenster aussieht.

Ein kurzer (ich scherze) Blick in die Dokumentation zeigt, es gibt eine Popup Klasse. Diese gehört in den Namensraum System.Windows.Controls.Primitives und eignet sich vorzüglich für unser Vorhaben.

<UserControl x:Class="UsingPopUp.SilverlightControl1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="200" Height="100">
    <Border x:Name="theBorder"
        BorderBrush="Red" BorderThickness="2" 
            Margin="2" CornerRadius="4">
    <Grid Background="White" Margin="2">       
            <Grid.RowDefinitions >
                <RowDefinition />
                <RowDefinition />                
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions >
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
             <TextBlock x:Name="tb" Grid.ColumnSpan="2" 
                        Margin="5" 
                        VerticalAlignment="Center"
                        HorizontalAlignment="Center"
                        >Wollen Sie wirklich?</TextBlock>
            <Button Grid.Row="1" 
                    Grid.Column="0" Content="Ja" Margin="5">                
            </Button>
           <Button Grid.Row="1" Grid.Column="1" 
              Content="Nein" Margin="5" Click="OnBtnClick"> 
           </Button>        
    </Grid>
        </Border>
</UserControl>

Ich mache es mir einfach und lege den (späteren) Inhalt des Popupfensters im Xaml-Editor an. (Tipp: nimm KaXml.)

Ich habe mir keine große Mühe mit der Namensgebung gemacht; SilverlightControl1 hört sich nach nichts an, "MsgInfo" oder so wäre schon angebrachter.

Im Xaml und im Code des Controls fehlen ein paar Dinge: Zum einen würde jeder Entwickler gerne den Nachrichtentext selbst setzen – und außerdem erwartet er eine Rückmeldung. Beide Anforderungen hebe ich mir für spätere Zeiten und Gelegenheiten auf.

Als Reaktion auf einen Anwenderklick machen wir das Popup nur unsichtbar. (Code in SilverlightControl1)

    1 private void OnBtnClick(object sender, RoutedEventArgs e)

    2 {

    3     this.Visibility = Visibility.Collapsed;

    4 }

Im "Hauptprogramm" findet sich nur ein einziger Butten – und über diesen aktivieren wir das PopUp.

Nun müssen wir folgendes Beachten: Versuchen wir das Popup ein zweites Mal in die Kinderliste mit aufzunehmen bekommen wir einen Laufzeitfehler. Wir umgehen dieses Problem mit der kleinen Abfrage in Zeile 10. (siehe unten)

Zeile 19 ist im ersten Durchgang überflüssig, erst beim zweiten Auslösen spielt dieVisibility eine Rolle.

    1 public partial class Page : UserControl

    2 {

    3     public Page()

    4     {

    5         InitializeComponent();

    6     }

    7     Popup dasPopup;

    8     private void OnButtonClick(object sender, RoutedEventArgs e)

    9     {

   10         if (dasPopup == null)

   11         {

   12             dasPopup = new Popup();

   13             dasPopup.Child = new SilverlightControl1();

   14             this.LayoutRoot.Children.Add(dasPopup);

   15             dasPopup.HorizontalAlignment = HorizontalAlignment.Center;

   16             dasPopup.VerticalAlignment = VerticalAlignment.Center;

   17             dasPopup.IsOpen = true;

   18         }

   19         dasPopup.Child.Visibility = Visibility.Visible;

   20     }

   21 }


http://blog.silverlight-city.de/page/Silverlight-Schulung.aspx

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

Silverlight | C# | Tipp, Trick

Comments

Comments are closed

Blogverzeichnis - Blog Verzeichnis bloggerei.de Add to Google Blog-Webkatalog Bloggeramt.de

Calendar

<<  February 2010  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

View posts in large calendar

Bücher

silverlight-3-crashkurs

Bücher zur Entspannung - SF, Fantasy

 

Silverlight-city.de Otto's Blog Datenschutz Impressum Lesefutter