WPF学习之路(八)页面_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WPF学习之路(八)页面

WPF学习之路(八)页面

 2015/4/20 11:32:15  alex_cool  程序员俱乐部  我要评论(0)
  • 摘要:传统的应用程序中有两类应用程序模式:桌面应用,Web应用。WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序四个核心要素:Page\HyperLink\NavigationServices\JournalPageWPF中的Page相比Window来说更加的精简,没有提供一个Show或者是Hide的方法,而是通过链接的方式进行页面切换。一般来说Page不设置自身的大小
  • 标签:学习

传统的应用程序中有两类应用程序模式:桌面应用,Web应用。WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序

 

WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序

四个核心要素:Page\HyperLink\NavigationServices\Journal

 

Page

WPF中的Page相比Window来说更加的精简,没有提供一个Show或者是Hide的方法,而是通过链接的方式进行页面切换。一般来说Page不设置自身的大小,因为页面的尺寸由包含它的宿主窗体来决定的。

新建一个Page

public partial class MyCustomPage : Page
{
    public MyCustomPage()
    {
        InitializeComponent();
        this.Title = "没有对窗口尺寸进行配置";
    }

    public MyCustomPage(double width, double height, double hostWinWidth, double hostWinHeigth)
        : this()
    {
        this.Width = width;
        this.Height = height;
        this.WindowWidth = hostWinWidth;
        this.WindowHeight = hostWinHeigth;
        this.Title = "对窗口尺寸进行配置";
        this.text.Text = "Width= " + width + "\n\n"
            + "Height= " + height + "\n\n"
            + "WindowWidth= " + hostWinWidth + "\n\n"
            + "WindowHeight= " + hostWinHeigth;
    }

}

App.xaml

<Application x:Class="Alex_WPFAPPDemo05.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup">

App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
{
    NavigationWindow win = new NavigationWindow();
    win.Content = new MyCustomPage();
    //win.Content = new MyCustomPage(300, 300, 500, 500);
    //win.Content = new MyCustomPage(500, 500, 300, 300);
    win.Show();
}

三种情况的效果图

 

 

 

 Page的宿主窗口包括浏览器、NavigationWindow、Frame

后两种是WPF提供的,能记录Page的导航记录和提供一系列导航事件。NavigationWindow是顶层窗口不能嵌入到其他控件,Frame是轻量级的,可以嵌入到其他控件

新建一个Page观察下这两种控件的不同

      <Border BorderBrush="Blue" BorderThickness="2" Margin="2">
            <TextBlock x:Name="text" Text="该页面的宿主窗口是一个Frame" HorizontalAlignment="Center" VerticalAlignment="Center" />
        </Border>

CustomPage

<Border BorderBrush="Red" BorderThickness="2" Margin="2">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <TextBlock Grid.Row="0" x:Name="text" Text="该页面的宿主窗口是一个NavigationWindow"
                        HorizontalAlignment="Center" VerticalAlignment="Center"  ></TextBlock>
            <Frame Grid.Row="1" Source="SimplePage.xaml" NavigationUIVisibility="Visible"></Frame>
        </Grid>
    </Border>

 

 

 

 

 

 

 

 

To be continue...

发表评论
用户名: 匿名