Xamarin.Forms 双屏触发器

Xamarin.Forms.DualScreen 命名空间包含两个状态触发器:

有关状态触发器的详细信息,请参阅状态触发器

范围模式状态触发器

在附加布局的范围模式发生改变时,SpanModeStateTrigger 会触发 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 更改。 此触发器有以下一个可绑定属性:

注意

由于 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 的背景色为红色;在多个窗格并排显示时,背景色为绿色;在多个窗格上下显示时,背景色为黄色。