我需要一个 VisualStateTrigger,它在 ListView.SelectedIndex > -1 时使用react
我的 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 中可行(如果可行,最有效的方法是什么),还是我需要在代码隐藏中解决此问题。
最佳答案
WindowsStateTriggers图书馆是您的 friend 。
<VisualState>
<VisualState.StateTriggers>
<triggers:CompareStateTrigger Value="{x:Bind someListView.SelectedIndex, Mode=OneWay}" CompareTo="-1" Comparison="GreaterThan" />
</VisualState.StateTriggers>
<VisualState.Setters>
关于c# - 如何使用 bool 值作为触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287665/