我正在重建我在downloadable code for this WPF video中找到的WPF幻灯片放映应用程序结构。
有一个Presentation类,它有一个INotifyPropertyChanged属性“CurrentSlide”,当你点击下一个/上一个按钮时它会改变,并在一个Frame元素中动态显示。
下载的代码将页面加载到此框架中,但我尝试使用加载UserControls ,这似乎也可以正常工作,实际上我找不到任何区别。
是否有人知道将Pages或UserControl加载到XAML Frame元素中的任何差异?
<Window x:Class="TestFull8229.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:TestFull8229.Commands"
xmlns:viewModels="clr-namespace:TestFull8229.ViewModels"
Title="Main Window" Height="400" Width="800">
<Window.Resources>
<viewModels:Presentation x:Key="presentation"/>
</Window.Resources>
<DockPanel>
<StackPanel>
<Viewbox Stretch="Uniform">
<Frame Width="800" Height="600"
Source="{Binding Path=CurrentSlide,
Source={StaticResource presentation}}"/>
</Viewbox>
</StackPanel>
</DockPanel>
</Window>
答案 0 :(得分:8)
页面设计在导航容器中,因此它具有title属性和对导航服务的访问权限。但正如您所指出的,UserControl可以加载到一个框架中,也可以加载任何有效的WPF“内容”。 Page也可用作PageFunction的基类,这对于创建向导等结构化导航非常有用。
哦,还有一件事......在没有主机应用程序的情况下,可以在Internet Explorer中加载页面。换句话说,IE可以像Frame或NavigationWindow一样充当页面的导航容器。