c# - 如何使用 bool 值作为触发器

标签 c# visual-studio xaml triggers win-universal-app

我需要一个 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/

相关文章:

c# - MongoDB 和 C#,如何按星期比较

c# - DataGrid 具有 WPF 中第 n 级单元格的 DataGrid

xaml - 何时在 UserControl 上使用模板化控件?

c# - 如何使自定义 MarkupExtension 从 XAML 文件可见/可访问?

c# - C# 的 static 是否与 VB.NET 中的 NotInheritable 相同?

C# 图像 : To preserve image's checksum

c# - 与不同类型的接口(interface)

.net - 验证 WCF 服务

c - 在 Visual Studio 中将 C 模块链接到 MASM

c++ - 用于 boost uuid 的 Visual Studio 2010 调试可视化工具