2016-04-28 13 views
0

私は異なるページで使用されているボタンやテキストブロック用のさまざまなスタイルを作成したUWPアプリケーションを持っています。スタイル自体にビジュアルステートセッターを適用できると私は考えていました。しかし、ビジュアルステートのセッターは、特定のコントロールに直接適用することしかできないようです。 Style要素にVisual Stateを適用する方法はありますか?私はすべての特定のフォントサイズを持っている私のページに60のテキストブロックを持っています。これらのコントロールのすべてに対して、視覚状態を使用するために別のフォントサイズを指定する必要がありますか、それとも簡単な方法がありますか。スタイル用のビジュアルステートセッターの設定ユニバーサルWindowsアプリケーション

ありがとうございます。

+0

60個のテキストブロックにすべて特定のフォントサイズがありますか?それぞれのフォントサイズは異なりますか?あるいは、いくつかの異なるフォントサイズを持ついくつかのグループにソートすることができますか? –

+0

60個のテキストブロックはすべて、画面サイズの特定のフォントサイズを持っています。例えば、モバイルの場合は15、デスクトップの場合は24です。私は一例としてテキストブロックを使用していました。私は、ボタンのテキストボックスなどのために同じことをしなければならないでしょう – user6248121

+0

これで、以下の答えのようにデータバインディングを使用することができます。 –

答えて

0

私はあなたに違いのあるアプローチをとらなければならないと思います:60 TextBlockのフォントサイズをプロパティにバインドし、条件がコードの背後でトリガーされたときに更新+通知します。 XAMLで

:コンストラクタで :背後にあるあなたのコードで

private double _MyFontSize = null; 

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

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

あなたのViewModelで、私はプロパティ変更イベントを通知するMVVMライトを使用し

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

もう少し詳細を教えてもらえますか?プロパティに基づいてビジュアル状態をトリガーするにはどうすればよいですか。私は別の画面サイズをサポートするために視覚的な状態を使用していることを明確にするために – user6248121

+0

あなたは視覚的な状態トリガーをトリガーしません。変更されたプロパティ(DataContextから)に通知します。あなたのケースでは、ページのSizeChangedイベントを購読し、それに応じて反応してください。 – thang2410199

+0

申し訳ありませんが、私はUWPモデル全体に​​慣れていません。あなたはこれを行う方法をいくつかのコードサンプルを共有できますか? – user6248121

関連する問題