单个视觉状态的多个 VisualState 触发器

Multiple VisualState Triggers for a single Visual State

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

类型

VisualState class 文档还指出 StateTriggers 文档:

oneOrMoreTriggers

One or more triggers that can be an AdaptiveTrigger or a custom trigger derived from StateTriggerBase. These can be used to indicate when the corresponding VisualState needs to be applied automatically without an explicit GoToState call. See Remarks on the StateTriggers property for more info.

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

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

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

它现在包含在 NuGet 包中 AdaptiveTriggerLibrary

尝试使用不同的 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

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