C# 如何使用布尔值作为触发器

C# 如何使用布尔值作为触发器,c#,visual-studio,xaml,triggers,win-universal-app,C#,Visual Studio,Xaml,Triggers,Win Universal App,我需要一个VisualStateTrigger,如果ListView.SelectedIndex>-1 我的XAML如下所示: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" EntranceNavigationTransitionInfo.IsTargetElement="True"> <VisualStateManager.VisualStateGroups&g

我需要一个VisualStateTrigger,如果ListView.SelectedIndex>-1

我的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时,应选择窄列表视图触发器,否则,窄细节视图触发器是所需的触发器

这是否只有在XAML中才可能(如果可能,最有效的方法是什么),或者我需要在代码隐藏中解决这个问题。

库是您的朋友

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


正确,如果可能的话,我想在xaml中执行此操作。哇!我还没看过那个图书馆。这是一些方便的东西就在那里+1!我试图避免使用一个对我来说有点过分的库,但它很棒,而且很有效。非常感谢。