Xamarin.Forms.DualScreen 命名空间包含两个状态触发器:
- 在附加布局的视图模式发生改变时,
SpanModeStateTrigger会触发VisualState更改。 - 在窗口的视图模式发生改变时,
WindowSpanModeStateTrigger会触发VisualState更改。
有关状态触发器的详细信息,请参阅状态触发器。
范围模式状态触发器
在附加布局的范围模式发生改变时,SpanModeStateTrigger 会触发 VisualState 更改。 此触发器有以下一个可绑定属性:
- 类型为
TwoPaneViewMode的SpanMode指明应该应用VisualState的范围模式。
注意
由于 SpanModeStateTrigger 派生自 StateTriggerBase 类,因此可以将事件处理程序附加到 IsActiveChanged 事件。
下面的 XAML 示例展示了包含 SpanModeStateTrigger 对象的 Grid:
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="GridSingle">
<VisualState.StateTriggers>
<dualScreen:SpanModeStateTrigger SpanMode="SinglePane"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Green" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="GridWide">
<VisualState.StateTriggers>
<dualScreen:SpanModeStateTrigger SpanMode="Wide" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Red" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="GridTall">
<VisualState.StateTriggers>
<dualScreen:SpanModeStateTrigger SpanMode="Tall" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Purple" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
</Grid>
此示例在 Grid 对象上设置了可视状态。 在仅显示一个窗格时,Grid 的背景色为绿色;在多个窗格并排显示时,背景色为红色;在多个窗格上下显示时,背景色为紫色。
窗口范围模式状态触发器
在窗口的范围模式发生改变时,WindowSpanModeStateTrigger 会触发 VisualState 更改。 此触发器有以下一个可绑定属性:
- 类型为
TwoPaneViewMode的SpanMode指明应该应用VisualState的范围模式。
注意
由于 WindowSpanModeStateTrigger 派生自 StateTriggerBase 类,因此可以将事件处理程序附加到 IsActiveChanged 事件。
下面的 XAML 示例展示了包含 WindowSpanModeStateTrigger 对象的 Grid:
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="NotSpanned">
<VisualState.StateTriggers>
<dualScreen:WindowSpanModeStateTrigger SpanMode="SinglePane"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Red" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Spanned">
<VisualState.StateTriggers>
<dualScreen:WindowSpanModeStateTrigger SpanMode="Wide" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Green" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Tall">
<VisualState.StateTriggers>
<dualScreen:WindowSpanModeStateTrigger SpanMode="Tall" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="Yellow" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
</Grid>
此示例在 Grid 对象上设置了可视状态。 在仅显示一个窗格时,Grid 的背景色为红色;在多个窗格并排显示时,背景色为绿色;在多个窗格上下显示时,背景色为黄色。