Xamarin.Forms 双屏触发器
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
的背景色为红色;在多个窗格并排显示时,背景色为绿色;在多个窗格上下显示时,背景色为黄色。