【发布时间】:2014-11-17 06:52:48
【问题描述】:
我正在尝试为我的 windows phone 8.1 应用程序创建一个通用标题。标题应该在所有页面中通用。我是 Windows Phone 应用程序开发的新手。有人可以建议最好和最干净的方法吗?
【问题讨论】:
标签: c# xaml user-interface windows-phone-8.1
我正在尝试为我的 windows phone 8.1 应用程序创建一个通用标题。标题应该在所有页面中通用。我是 Windows Phone 应用程序开发的新手。有人可以建议最好和最干净的方法吗?
【问题讨论】:
标签: c# xaml user-interface windows-phone-8.1
选项 1
如果您打算将标题用于绝对所有页面而不排除任何页面,则可以将控件放在 Frame 之外。这样,它将在页面导航之间持续存在。
首先将您的标题创建为用户控件(项目 -> 添加新项目 -> 用户控件)。然后在 App.xaml.cs 中的 Application.OnLaunched() 覆盖(或您创建框架的任何位置)中,替换此行
// Place the frame in the current Window
Window.Current.Content = rootFrame;
有了这个
var grid = new Grid();
grid.Margin = new Thickness(0, 26, 0, 0); // compensate for status bar
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
var header = new MyHeaderUserControl();
grid.Children.Add(header);
Grid.SetRow(rootFrame, 1);
grid.Children.Add(rootFrame);
Window.Current.Content = grid;
现在您的标题将出现在与此类似的所有页面上:
几点:
Window.Current.Content 将是 Frame(就像很多代码一样)。Window.Current.Content 时(像往常一样),它似乎会自动补偿状态栏的外观。我必须在根网格中添加 26px 的上边距,以便标题显示在状态栏下方。选项 2
如果你想要更多的灵活性,比如排除某些页面显示页眉或通过数据绑定将页眉的内容更改为某些页面特定的数据,那么我建议你不要更改根框架而是包含页眉手动在您想要的页面中。
如果您的应用很简单,页面很少,那么第一个选项可能是最简单的,但是如果您的应用很复杂,那么您可能需要后者。就个人而言,我总是会选择后一种选择,只是因为我想要最大的灵活性。
【讨论】: