0

我正在尝试为我的所有 Windows Phone 7 页面定义一个公共基本页面,其中包括一个用于派生页面添加其标记的公共位置,类似于 ASP.NET 中的内容占位符。

到目前为止,我看到的代码示例都添加了代码行为,但没有一个显示我如何使用基本页面来执行以下操作:

  • 将应用程序标题放在左上角
  • 将公司标志放在右上角
  • 有一个动态的(意味着用户可以改变它)背景图片

我可以定义一个自定义的 MyTitleControl 来实现上面的大部分项目,但我仍然必须依赖引用它的所有页面(而不是从公共基础页面派生)。这在 WP7 中甚至可能吗?

4

3 回答 3

1

使用基页类执行此操作的唯一方法是使用“已加载”事件或更好的方法 OnNavigatedTo 并根据需要更改可视化树。

PhoneApplicationPage 类派生自 UserControl,因此它的可视化树是使用 InitializeComponent 自动生成的方法构建的。生成它是为了读取 XAML 和实例化控件并将根控件设置为当前用户控件的内容(在此场景中为页面)。

所以你可能会在以后使用它(不是在 ctor 中)或者在这个方法之后修改树。

另一种选择可能是为页面创建样式并将其应用于所有页面。

于 2012-10-01T16:16:25.707 回答
1

你不能。这是 WP7 的限制。

每个 WP7 应用程序都有一个与之关联的 PhoneApplicationFrame 实例。每次当前页面更改时,PhoneApplicationFrame 'Content' 属性都会设置为 PhoneApplicationPage。并且一个 PhoneApplicationPage 不支持里面有额外的 PhoneApplicationPages。

完成类似操作的唯一方法是将所有页面转换为 UserControl,并确保只有一个 PhoneApplicationPage 。

于 2012-10-02T08:45:24.260 回答
0

您可以从 PhoneApplicationPage 继承并为您的新类提供附加属性、新的默认样式、新模板 - 毕竟页面只不过是具有自定义属性的 UserControl。

然后更改您的 myPage.xaml.cs 和 myPage.xaml 文件以从您的新类而不是从 PhoneApplicationPage 继承。

于 2012-10-02T09:20:16.720 回答