2016-04-28 4 views
0

Ich habe eine UWP-App, wo ich verschiedene Stile für Schaltflächen und Textblöcke erstellt habe, die auf verschiedenen Seiten verwendet werden. Ich hatte angenommen, dass ich in der Lage sein werde, Visual State-Setter auf die Stile selbst anzuwenden. Es scheint jedoch, dass die Setter in Visual State nur direkt auf ein bestimmtes Steuerelement angewendet werden können. Gibt es eine Möglichkeit, Visual State auf ein Style-Elemente anzuwenden. Ich habe 60 Textblöcke in meinen Seiten, die alle eine bestimmte Schriftgröße haben. Muss ich eine andere Schriftgröße für alle diese Steuerelemente angeben, um Visual State zu verwenden, oder gibt es eine einfachere Möglichkeit, es zu tun.Konfigurieren von visuellen Statuseinstellungen für einen Stil Universal Windows App

danke im voraus.

+0

Ihre 60 Textblöcke haben alle eine bestimmte Schriftgröße? Jede Schriftgröße ist anders? Oder sie können in mehrere Gruppen mit verschiedenen Schriftgrößen sortiert werden? –

+0

Die 60 Textblöcke haben alle eine bestimmte Schriftgröße für die Bildschirmgröße. Für z.B. 15 für mobile und 24 für den Desktop. Ich habe Text Block als ein Beispiel verwendet. Ich werde das gleiche für Tasten Textbox etc. tun müssen. – user6248121

+0

OK, dann können Sie Datenbindung dafür verwenden, wie die Antwort unten. –

Antwort

0

Ich denke, Sie sollten einen Unterschied Ansatz nehmen: Binden Sie die Schriftgröße von 60 TextBlock an eine Eigenschaft, und update + notify es, wenn Ihre Bedingung im Code ausgelöst wurde.

in XAML:

<TextBlock FontSize={"Binding MyFontSize"}/> 
<!-- 60 of your textblock here ...... --> 

in Ihrem Ansichtsmodell, verwende ich MVVM Licht die Eigenschaft veränderte Kenntnis zu setzen:

private double _MyFontSize = null; 

    public double MyFontSize 
    { 
     get 
     { 
      return _MyFontSize; 
     } 
     set 
     { 
      Set(ref _MyFontSize, value); 
     } 
    } 

In Ihrem Code hinter: in contructor:

this.SizeChanged += LoginPanel_SizeChanged; 

private void LoginPanel_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     if(e.NewSize.Width >= 600) 
     { 
      (this.DataContext as MyViewModel).MyFontSize = 20; 
     } 
     else 
     { 
      (this.DataContext as MyViewModel).MyFontSize = 16; 
     } 
    } 
+0

Können Sie ein wenig mehr Details zur Verfügung stellen? Wie trigger ich den visuellen Zustand basierend auf einer Eigenschaft aus? Nur um zu verdeutlichen, verwende ich visuellen Zustand, um verschiedene Bildschirmgrößen zu unterstützen – user6248121

+0

Sie nicht auslösen den visuellen Zustand auslösen. Sie benachrichtigen die geänderte Eigenschaft (von Ihrem DataContext). In Ihrem Fall, abonnieren Sie das SizeChanged-Ereignis der Seite und reagieren Sie entsprechend. – thang2410199

+0

Es tut mir leid, dass ich neu im ganzen UWP-Modell bin. Können Sie ein Codebeispiel teilen, wie dies zu tun ist? – user6248121