【问题标题】:How do I use a boolean Value as Trigger如何使用布尔值作为触发器
【发布时间】:2016-03-29 14:46:50
【问题描述】:

我需要一个 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 时,应选择narrowListView-Trigger,否则,narrowDetailsView-Trigger 是所需的。

这是否仅在 XAML 中可行(如果可以,最有效的方法是什么),还是我需要在代码隐藏中解决这个问题。

【问题讨论】:

  • 正确,如果可能,我想在 xaml 中执行此操作。

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


【解决方案1】:

WindowsStateTriggers library 是你的朋友。

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

【讨论】:

  • 哇!我还没有看到那个图书馆。那里有一些方便的东西+1!
  • 我试图避免使用一个对我的目的来说有点矫枉过正的库,但它很棒而且有效。谢谢。
猜你喜欢
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 2012-06-08
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多