Silverlight Statische Assembly-Ressourcen und Bildschirmauflösung
Kommentare

Wie kann man eigentlich Styles aus bestimmten Silverlight-Assemblies auch in anderen Silverlight-Anwendungen nutzen? Und wie fügt man einer Silverlight-Anwendung automatisch ein Pop-up mit einem Hinweis der unterstützten Bildschirmauflösung hinzu? Gregor Biswanger beantwortet diese Fragen.

Menü 1 für Einsteiger: Statische Ressourcen aus Assemblies

Der allgemein bekannte Platz für Styles von Silverlight-Anwendungen ist die App.xaml-Datei. Jedes implementierte Style steht somit der gesamten Silverlight-Anwendung als statische Ressource zur Verfügung. Doch was, wenn der Wunsch auftaucht, die Styles auch für andere Silverlight-Anwendungen nutzen zu können? Hierbei hilft das Auslagern der Styles in eine eigene Assembly. Dafür sind gerade mal zwei Schritte nötig.

Schritt 1: Hinzufügen einer Silverlight Resource Dictionary

In Visual Studio wird mittels Rechtsklick auf den Projektnamen ein neues Item unter ADD NEW ITEM hinzugefügt. Beim folgenden Fester findet man die Silverlight Resource Dictionary im Bereich der installierten Silverlight-Templates (Abb. 1).

Abb.1: Eine Silverlight Resource Dictionary hinzufügen
Abb.1: Eine Silverlight Resource Dictionary hinzufügen
Schritt 2: Styles Assembly laden

In der App.xaml wird mittels Resource Dictionary die Styles Assembly für das Projekt geladen (Listing 1).


    
        
            
        
    
  

Die Zuweisung der Styles wird in der Anwendung wie bisher gehandhabt: .

Menü 2 für Experten: Pop-up-Hinweis zur unterstützen Bildschirmauflösung

Die erste Frage, die sich zu Beginn eines Silverlight-Projekts stellt, ist die nach der minimalen Bildschirmauflösung, die unterstützt werden soll. Dieses How-to zeigt, wie einer Silverlight-Anwendung automatisch ein Pop-up mit einem Hinweis der unterstützten Bildschirmauflösung hinzugefügt wird.

Dazu wird zu Beginn der Initialisierungsvorgang der Hauptseite in der App.xaml.cs-Datei in der StartUp-Methode abgefangen und um ein Boder mit enthaltenem Pop-up-Steuerelement erweitert. Von der Hauptseite MainPage wird dann das Event SizeChanged abonniert, wobei jede Skalierung der Bildschirmgröße abgefangen und überprüft wird. Listing 2 zeigt deren Implementierung. Sollte die Anwendung später durch weitere Pages erweitert werden, wobei die Hauptseite ihre Lebensdauer verliert, empfiehlt sich ein Expression Blend Behavior aus dem Code von Listing 2 zu basteln. Somit muss nur noch für jede weitere Page das Behavior auf die oberste Ebene zugewiesen werden.

private Popup _popupInfo;
private Border _border;

private void Application_Startup(object sender, StartupEventArgs e)
{
    _border = new Border
                  {
                      Background = new SolidColorBrush(Colors.Red), 
                      Visibility = Visibility.Collapsed
                  };

    _popupInfo = new Popup
                     {
                         Child = new TextBlock
                                     {
                                         Text = "Hinweis! Es wird nur eine Auflösung von 1024 x 768 unterstützt.",
                                         FontSize = 16
                                     }
                     };
    _border.Child = _popupInfo;

    MainPage mainPage = new MainPage();
    mainPage.LayoutRoot.SizeChanged += LayoutRoot_SizeChanged;
    mainPage.LayoutRoot.Children.Add(_border);

    this.RootVisual = mainPage;
}

void LayoutRoot_SizeChanged(object sender, SizeChangedEventArgs e)
{
    int screenHeight = Convert.ToInt32(Host.Content.ActualHeight);
    int screenWidth = Convert.ToInt32(Host.Content.ActualWidth);

    if(screenWidth < 1024 && screenHeight < 768)
    {
        _border.Visibility = Visibility.Visible;
        _popupInfo.IsOpen = true;
    }
    else
    {
        _border.Visibility = Visibility.Collapsed;
        _popupInfo.IsOpen = false;
    }
}  

Beim Starten der Anwendung wird der normale Inhalt der Hauptseite wie gewohnt angezeigt (Abb. 2). Sollte sich die Auflösung vom Browser unter der minimal unterstützen Auflösung von 1024 x 768 verändern, wird, wie in Abbildung 3 dargestellt, ein rotes Informations-Pop-up angezeigt.

Abb. 2: Silverlight-Anwendung im Normalzustand
Abb. 2: Silverlight-Anwendung im Normalzustand
Abb. 3: Silverlight-Anwendung mit Information zur unterstützten Bildschirmauflösung
Abb. 3: Silverlight-Anwendung mit Information zur unterstützten Bildschirmauflösung

Beim Internet Explorer 8 können die Entwicklertools mittels F12-Taste oder im Menü unter EXTRAS geöffnet werden. Bei den Entwicklertools gibt es eine Funktion, um den Browser auf eine bestimmte Auflösung skalieren zu lassen. Dazu einfach im Menü der Entwicklertools unter EXTRAS | GRÖßE ÄNDERN die gewünschte Auflösung auswählen.

Gregor Biswanger ist Solution Architect und Silverlight-Fachexperte bei der Firma impuls Informationsmanagement GmbH in Nürnberg. Seine Schwerpunkte liegen im Bereich der .NET-Architektur und agiler Prozesse. Biswanger ist auch freier Autor, Trainer, Projektbegleiter, Speaker und Microsoft CLIPler der INdotNET (Ingolstädter .NET Developers Group). Sie erreichen seinen Blog unter www.dotnet-blog.net.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -