【问题标题】:Multiple VisualState Triggers for a single Visual State单个视觉状态的多个 VisualState 触发器
【发布时间】:2015-10-21 09:17:27
【问题描述】:

我正在尝试为我在 Windows 10 下的新通用应用程序编写 VisualState
根据有关VisualState.StateTriggers 的文档,您可以将多个触发器添加到视觉状态,因为该属性的类型为IList<StateTriggerBase>

VisualState 类文档还指出了StateTriggers 文档:

oneOrMoreTriggers

一个或多个触发器,可以是 AdaptiveTrigger 或从 StateTriggerBase 派生的自定义触发器。这些可用于指示何时需要自动应用相应的 VisualState,而无需显式调用 GoToState。有关详细信息,请参阅 StateTriggers 属性的备注。

但是,文档没有指出多个触发器在此处的工作原理。 也没有办法通过任何 C# 代码修改行为。
对于StateTriggers 部分中指定的那些触发器,我想要的行为需要一些AND/OR 条件。

除了写我自己的"MultiTrigger",还有其他方法吗,从StateTriggerBase派生?

【问题讨论】:

    标签: c# xaml win-universal-app windows-10 uwp


    【解决方案1】:

    好的。由于没有内置MultiTrigger,我写了自己的MultiTrigger。 多触发器支持ANDOR条件,这正是我需要的。

    它现在包含在 NuGet 包 AdaptiveTriggerLibrary 中。

    【讨论】:

    • 我已经在我的 UWP 项目(为 RS1 构建)中安装了 AdaptiveTriggerLibrary,我正在尝试让两个 MultiTriggers 与一个 AndModifier 一起使用一个 WindowHeightTrigger 和一个 WindowWidthTrigger,但似乎第一个无论我做什么,MultiTrigger 总是在第二个上处于活动状态。您是否有该库的支持电子邮件,我在哪里可以获得有关它的帮助?谢谢!
    • @Sergio0694 随时在 GitHub 上打开一个问题:github.com/Herdo/AdaptiveTriggerLibrary - 我会尽快调查。
    【解决方案2】:

    尝试使用不同的 VisualStateGroups。 例如,要处理不同的宽度和方向,请使用 2 个 VisualStateGroups

    <VisualStateGroups x:Name="WidthStates">
        ...
    </VisualStateGroups> 
    
    <VisualStateGroups x:Name="OrientationStates">
        ...
    </VisualStateGroups> 
    

    在 msdn 上查看此相关问题:

    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/95291be1-25c7-4310-bb2b-b8fcead3b4d9/multiple-statetriggers-supporting-narrow-and-landscape

    【讨论】:

      【解决方案3】:

      赫多, 我在StateTriggers 行为中观察到的是,当触发器在同一个组中时,它们以相互排斥的方式按顺序执行,类似于AND 模式。 来自不同VisualStateGroupsAND 触发器独立执行,类似于OR 模式。 在这个观察到的行为中,我将改变同一组属性的事物组织到同一个组中,以便在组内控制条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 2021-01-08
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-21
        相关资源
        最近更新 更多