ui.Kolumne: XAML Expertise

WPF Silverlight Silverlight for Windows Phone und Metro-Style-Apps
Kommentare

In der Kolumne „XAML Expertise“ des Windows Developer präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und Fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „Ancestor RelativeSource Binding“, „Automatisches Beenden verhindern“ und „Application Themes“. Viel Spaß mit „XAML Expertise“.

Windows Developer

Dieser Teil der Kolumne „XAML Expertise“ von Gregor Biswanger ist erstmalig erschienen im Windows Developer 10.2012

Silverlight 5: Ancestor RelativeSource Binding

Silverlight 5 hat ein weiteres neues Feature namens „Ancestor Relative Source Binding“. Dieses Feature gab es bereits unter WPF, und es wurde neu in Silverlight eingeführt. Damit können Sie jetzt sehr leicht zu relativ übergeordneten Elementen binden, z. B., wenn ein Kindelement auf ein Elternelement dynamisch ohne Element-Binding auf Werte zugreifen möchte. Im folgenden Listing wird gezeigt, wie ein Kindelement (TextBlock) auf das Elternelement (Button) den Wert des Alt-Properties nimmt. Mit einer weiteren Binding-Eigenschaft AncestorLevel, kann auch auf höhere Ebenen ein Zugriff erfolgen.

  
WPF: Automatisches Beenden verhindern

Wenn sich ein Benutzer abmeldet oder den Computer herunterfährt, wird eine Anwendung automatisch beendet. In diesem Fall fordert Windows jede geöffnete Anwendung zum Herunterfahren auf. In einigen Fällen ist eine Anwendung jedoch nicht zum Herunterfahren bereit. So kann eine Anwendung beispielsweise Daten enthalten, die sich in einem inkonsistenten Zustand oder in einem langwierigen Vorgang befinden. Wenn diese Situation eintrifft, empfiehlt es sich, das Beenden der Anwendung zu verhindern und stattdessen den Benutzern die Entscheidung zu übergeben, ob die Sitzung beendet werden soll.

Um das zu ermöglichen, wird innerhalb der App-Klasse die OnSessionEnding-Methode überschrieben (Listing 1). Über die SessionEndingCancelEventArgs-Instanz kann dann durch das Cancel-Property das Beenden der Anwendung mittels True gestoppt werden (Abb.1).

Listing 1: Automatisches beenden einer WPF-Anwendung verhindern
public partial class App : Application
{
    protected override void OnSessionEnding(SessionEndingCancelEventArgs e)
    {
        base.OnSessionEnding(e);

        MessageBoxResult messageBoxResult = 
            MessageBox.Show("Windows möchte die Anwendung beenden. Möchten Sie den Vorgang Abbrechen?", "Anwendung soll beendet werden", MessageBoxButton.YesNo);

        if (messageBoxResult == MessageBoxResult.Yes)
        {
            e.Cancel = true;
        }
    }
}  
Abb. 1: Windows möchte die Anwendung beenden
Abb. 1: Windows möchte die Anwendung beenden
Metro-Style-App: Application Themes

Metro-Style-Apps verwenden in ihren Templates die Styles von der themeresources.xaml-Datei. Diese gibt per Standard ein schwarzes Theme vor, zur Auswahl steht auch passend ein weißes Theme. Um auf eines der beiden Themes zu wechseln, wird in der App.xaml.cs-Datei, im Konstruktor das gewünschte Theme definiert (Listing 2). Eine weitere Möglichkeit bietet die App.xaml-Datei direkt im XAML an. Hier wird ebenfalls mit dem RequestedTheme-Property eines der beiden Themes fest deklariert (Listing 3).

Listing 2
public partial class App : Application
{
public App()
{
  App.Current.RequestedTheme = ApplicationTheme.Light;
this.InitializeComponent();
this.Suspending += OnSuspending;
}
...
}  
Listing 3

...  

Beim XAML-Designer kann man auch unter dem Device-Fenster testen, wie jeweils eines der beiden Themes auf die eigene App wirkt (Abb. 2). Dazu einfach im Menü unter DESIGN den Punkt DEVICE WINDOW anklicken und unter Themes das gewünschte Design auswählen (Abb. 3).

Abb. 2: Die beiden Themes für Metro-Style-Apps
Abb. 2: Die beiden Themes für Metro-Style-Apps
Abb. 3: Die Themes im Designmodus testen
Abb. 3: Die Themes im Designmodus testen
Gregor Biswanger ist Microsoft MVP für Client App Dev und arbeitet als Solution Architect und XAML-Experte in der Firma impuls Informationsmanagement GmbH in Nürnberg. Seine Schwerpunkte sind die .NET-Architektur, Silverlight und agile Prozesse. Er veröffentlichte vor Kurzem seine DVD mit Videotrainings zum Thema „WPF 4 und Silverlight 4“ bei Addison-Wesley von video2brain. Biswanger ist auch freier Autor, Speaker und Microsoft CLIPler der INdotNET (Ingolstädter .NET Developers Group). Sie erreichen seinen Blog unter http://www.dotnet-blog.net.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -