2016-04-19 4 views
0

UWPアプリケーションでは、3つの値を返すプロパティがあります。私はコンバータを使用してこの値に基づいて別のグリッドを表示したい。これを達成する最良の方法は何ですか?私が目指す方向は、3つの異なるグリッドテンプレートを作成してから、コンバーターが返すものに基づいてこれらの3つのテンプレートのいずれかにスタイルを設定することです。これがうまくいくかどうかは誰にも分かりますか?私のグリッドはグリッドでなければならない、それはcontentcontrolかそのようなものかもしれない。私は基本的にUWPアプリケーションのコンバータの値に基づいて別のグリッドを選択してください

おかげ

+0

これはWindowsの普遍的なアプリですか? – SWilko

+0

はい、申し訳ありませんが、UWPアプリケーション – user6115111

+0

私は3つのグリッドをすべて入れて、可視性のコンバータに列挙型で可視性を制御すると思います – user6115111

答えて

0

私はWindowsStateTriggers NuGetパッケージを使用するプロパティに基づいてUIの別のセクションを示したいと思います。

一度インストールあなたのXAMLのトップ

xmlns:triggers="using:WindowsStateTriggers" 

、あなたがIsBusy

public bool IsBusy { get; set; } = false; 

と呼ばれるあなたのバックエンドクラスのプロパティを持っていたし、たとえば、あなたが2シンプルを持っていたと言うで参照することができますあなたのxamlのグリッド。

<StackPanel x:Name="root"> 
    <Grid x:Name="RedGrid" Background="Red" Width="200" Height="100" /> 
    <Grid x:Name="GreenGrid" Background="Green" Width="200" Height="100" Visibility="Collapsed"/> 
</StackPanel> 

Visual State Groupを設定して、IsBusyプロパティに基づいてグリッドを表示できます。 IsBusy =真

<StackPanel x:Name="root"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="IsBusy"> 
       <VisualState.StateTriggers> 
        <triggers:EqualsStateTrigger EqualTo="True" Value="{Binding IsBusy, ElementName=root}" /> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="RedGrid.Visibilty" Value="Collapsed"/> 
        <Setter Target="GreenGrid.Visibility" Value="Visible" /> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <Grid x:Name="RedGrid" Background="Red" Width="200" Height="100" /> 
    <Grid x:Name="GreenGrid" Background="Green" Width="200" Height="100" /> 
</StackPanel> 

NB {Binding IsBusy, ElementName=root}があなたのDataContextIsBusy財産の場所に依存したときに私たちは、グリーン・グリッドが見えるようにしたいと赤のグリッドが崩壊すること。ここではそのページのコードの後ろにあります。 あなたにアイデアを与えることを願っています。

関連する問題