Xamarin TwoPaneView 布局

TwoPaneView 控件在DualScreen NuGet预览中可用。 下面的代码演示了一个简单的 XAML 示例:

<ContentPage xmlns:dualScreen="clr-namespace:Xamarin.Forms.DualScreen;assembly=Xamarin.Forms.DualScreen">
    <dualScreen:TwoPaneView>
        <dualScreen:TwoPaneView.Pane1>
            <StackLayout>
                <Label Text="Pane1 Content" />
            </StackLayout>
        </dualScreen:TwoPaneView.Pane1>
        <dualScreen:TwoPaneView.Pane2>
            <StackLayout>
                <Label Text="Pane2 Content" />
            </StackLayout>
        </dualScreen:TwoPaneView.Pane2>
    </dualScreen:TwoPaneView>
</ContentPage>

默认情况下,TwoPaneView 将尝试始终呈现两个窗格,这意味着当应用在单个屏幕上运行时,视图将在这两个窗格之间拆分。 以下属性可用于在仅在一个屏幕上呈现时影响布局:

  • MinTallModeHeight - 指示控件进入 Tall 模式所必需的最小高度。
  • MinWideModeWidth - 指示控件进入 Wide 模式所必需的最小宽度。
  • Pane1Length –以宽模式设置 pane1.xaml 的宽度,在高度模式下设置 pane1.xaml 的宽度,在 SinglePane 模式下不起作用。
  • Pane2Length –以宽模式设置 Pane2 的宽度,在高度模式下设置 Pane2 的宽度,在 SinglePane 模式下不起作用。

在 Surface Duo 上,应用程序可以跨越两个屏幕。 TwoPaneView 控件具有其他属性,这些属性确定两个窗格相对于彼此的呈现位置(在单屏或双屏中):

  • TallModeConfiguration –在高模式下,窗格可以是顶部/底部、底部/顶部或单个窗格。
  • WideModeConfiguration –在宽模式下,窗格可以是左/右、右/左或单个窗格。
  • PanePriority -是否在 "高" 或 "宽" 模式下选择 "在 SinglePane 模式下显示 pane1.xaml" 或 "Pane2"。

有三种显示模式:

  • SinglePane - 当前只显示一个窗格。
  • Wide - 两个窗格水平布局。 一个窗格位于左侧,另一个窗格位于右侧。 在表面上,这两个屏幕处于纵向模式。
  • Tall - 两个窗格垂直布局。 一个窗格位于顶部,另一个窗格位于底部。 在表面上,这两个屏幕处于横向模式。

阅读 Xamarin 文档中的详细信息。 UWP TwoPaneView 文档中的某些设计注意事项也适用于 Xamarin 控件。

疑难解答

如果观察到中 TwoPaneView 的意外行为或布局,请检查 设置说明,其中包括 Init 方法和 ConfigurationChanges 属性。