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

时间:2015-04-10 09:22:27

标签: c# user-controls windows-store-apps windows-8.1 flipview

我正在构建一个图片查看应用程序。在风景中,它打开就像一本显示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”?

2 个答案:

答案 0 :(得分:1)

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

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

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

在模板之间切换Current_SizeChanged事件:

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

答案 1 :(得分:0)

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

  <DataTemplate x:key = "datatTemplate1" />

  <DataTemplate x:key = "datatTemplate2" />

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