WP8如何创建基页并使用它

我用谷歌搜索,但没有得到任何有用的资源,所以我决定问。

问题:

我有一个Windows Phone 8 C#/ XAML .NET 4.5应用程序 ,它将有几个页面( 15 – 50 ),它们将具有相似的外观+相同的datacontext设置为一个ViewModel实例

-------------------------- |logo usermenu(v)| -------------------------- | | | | | | | ..variable.. | | ..content... | | | | | -------------------------- 

题 :

我在这件事上找不到任何可用的东西,有人可以解释一下怎么做吗?

(我是菜鸟 – 这意味着我很感激任何有用的信息,但更多的是对傻瓜的解释)

  • 如何创建一个基页/祖先来从中派生我的页面?

  • 有没有办法在祖先中设置datacontext?

  • 如何使用该基页/祖先?

PS:如果你想知道为什么我想要有相同datacontext的页面,有更多关于它的文章写在我之前问过的这个问题

听起来你可能在这里采取了错误的做法。

不是拥有15-50个具有相同数据上下文的相同页面,而是拥有一个页面并改变DataContext。 这将比拥有大量页面都简单得多,这些页面都来自同一个基础。
当然,这取决于您的实际内容的变化程度。

就您的具体问题而言:

  • 页面是与其他类似的类,因此inheritance以相同的方式定义。 只需确保在csxaml文件中指定祖先。

  • 您不能将祖先中的datacontext设置为与实际实例不同,如果您只是在祖先中设置它,它将无法用于实例。 您需要在实例中设置DataContext。

  • 像这样的东西:

一个非直观的(在片刻中更多)基页

 namespace SO19398590 { using Microsoft.Phone.Controls; public class MyBasePage : PhoneApplicationPage { } } 

从中inheritance的实际页面。
CS:

 public partial class MainPage : MyBasePage { public MainPage() { InitializeComponent(); } } 

xaml(部分):

      

请注意,这是一个没有可视化的基页,我知道您要求从基类进行可视inheritance。
不幸的是,在可视化页面inheritance方面,Windows Phone的故事非常糟糕。 工具(设计师)不喜欢它,并且很容易陷入难以诊断的问题。

更好的方法是使用[一个页面的多个实例],但根据要显示的数据加载不同的用户控件。
稍微复杂的替代方案但仍然允许标准页面导航体验是使用自定义PhoneApplicationFrame并在那里包含常见的UI元素。

对不起,这是一个非常通用的答案,但“最佳”解决方案将取决于您定义为“可变内容”的空间中的实际内容。

在我看来,最好的方法是创建一个包装您的徽标和用户菜单的UserControl 。 然后在每个页面中包含UserControl