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;
我正在构建一个图片查看应用程序。在横向模式下,它像一本打开的书一样打开,显示 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;