FlipView 中的 DataTemplate 有 2 个 UserControl,一次一个

DataTemplate in FlipView having 2 UserControls, one at a time

我正在构建一个图片查看应用程序。在横向模式下,它像一本打开的书一样打开,显示 2 个连续的图像。在肖像中,它显示一个单独的图像。 我正在考虑为我的 FlipView 的 DataTemplate 中的这两个 ViewState 中的每一个使用 UserControl。然后在 Current_SizeChanged 事件中更改他们的可见性。

这是我的 Xaml,只有一个 UserControl 设置为 DataTemplate:

<FlipView x:Name="flipView1" SelectionChanged="flipView1_SelectionChanged">
    <FlipView.ItemTemplate>
        <DataTemplate>
            <local:portraitControl/>
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

但是一个DataTemplate 不能包含多个UserControl。有没有一种方法可以 将本地 UserControl 绑定到我的 DataTemplate 以在不在 Xaml 的代码中将我的 "portraitControl" 或 "landscapeControl" 分配给它?

您可以在XAML中定义2个不同的模板,并在代码中切换项目模板。

  <DataTemplate x:key = "datatTemplate1" />

  <DataTemplate x:key = "datatTemplate2" />

  flipView1.ItemTemplate = Resources["datatTemplate1"] as DataTemplate

您需要做的是创建两个数据模板,每个模板都有一个用户控件:

<DataTemplate x:key = "portraitTemplate">
            <local:portraitControl/>
 </DataTemplate>

 <DataTemplate x:key = "landscapeTemplate">
            <local:landscapeControl/>
 </DataTemplate>

在您的 Current_SizeChanged 事件模板之间切换:

flipView1.ItemTemplate = Resources["portraitTemplate"] as DataTemplate;