2016-03-29 1 views
1

としてブール値を使用してください> -1どのように私はListView.SelectedIndex場合に反応するVisualStateTriggerを必要とするトリガ

私のXAMLは次のようになります。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" 
     EntranceNavigationTransitionInfo.IsTargetElement="True"> 
    <VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="wideView"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="960"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="ListColumn.Width" Value="420"/> 
        <Setter Target="DetailColumn.Width" Value="*"/> 
       </VisualState.Setters> 
      </VisualState> 
      <VisualState x:Name="narrowDetailView"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 

       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="ListColumn.Width" Value="0"/> 
        <Setter Target="DetailColumn.Width" Value="*"/> 
       </VisualState.Setters> 
      </VisualState> 
      <VisualState x:Name="narrowListView"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="ListColumn.Width" Value="*"/> 
        <Setter Target="DetailColumn.Width" Value="0"/> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition x:Name="ListColumn" Width="0"/> 
     <ColumnDefinition x:Name="DetailColumn" Width="*"/> 
    </Grid.ColumnDefinitions> 
    <ListView x:Name="SelectionList" 
       Grid.Column="0"/> 
    <ListView x:Name="DetailsList" 
       Grid.Column="1"/> 
</Grid> 

ときSelectionList SelectedIndexをが== - 1 narrowListView-Triggerを選択する必要があります。それ以外の場合はnarrowDetailsView-Triggerが必要です。

これはXAMLでのみ可能です(もしそうなら、最も効果的なアプローチは何か)。これをコードビハインドで解決する必要がありますか?

+0

これはC#で設定できます。あなたはC#でそれをしたくないですか? –

+0

可能であれば、これをxamlでやりたいと思います。 –

答えて

3

WindowsStateTriggersライブラリはあなたの友人です。

<VisualState> 
    <VisualState.StateTriggers> 
     <triggers:CompareStateTrigger Value="{x:Bind someListView.SelectedIndex, Mode=OneWay}" CompareTo="-1" Comparison="GreaterThan" /> 
    </VisualState.StateTriggers> 
<VisualState.Setters> 
+0

WHOA!私はその図書館をまだ見ていない。それはすぐに便利なものです+1! –

+0

私は私の目的のためにちょっと残忍なライブラリを使わないようにしていましたが、それは素晴らしいことです。ありがとうございました。 –

関連する問題