gpt4 book ai didi

c# - WP8 如何创建基页并使用它

转载 作者:太空狗 更新时间:2023-10-30 00:32:13 25 4
gpt4 key购买 nike

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

问题:

我有一个 Windows Phone 8 C#/XAML .NET 4.5 应用程序,它将有多个页面(15 - 50) 都将具有相似的外观 + 将相同的数据上下文设置为 ViewModel 的一个实例:

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

问题:

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

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

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

  • 有没有办法在祖先中设置数据上下文?

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

P.S.:如果您想知道为什么我想要具有相同数据上下文的页面,This question I asked before 中有更多关于它的文章。

最佳答案

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

与其拥有 15-50 个具有相同数据上下文的相同页面,不如拥有一个页面并改变 DataContext。这将比拥有许多都来自同一基础的页面要简单得多。
当然,这取决于您的实际内容的可变性。

就您的具体问题而言:

  • 页面是与其他任何类一样的类,因此以相同的方式定义继承。只需确保在 csxaml 文件中指定祖先即可。

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

  • 像这样:

非可视化(稍后详细介绍)基页

namespace SO19398590
{
using Microsoft.Phone.Controls;

public class MyBasePage : PhoneApplicationPage
{
}
}

继承自此的实际页面。
CS:

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

xaml(部分):

<so19398590:MyBasePage
x:Class="SO19398590.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:so19398590="clr-namespace:SO19398590"
SupportedOrientations="Portrait">

<Grid x:Name="LayoutRoot" Background="Transparent">
<!-- put stuff here -->
</Grid>

</so19398590:MyBasePage>

请注意,这是一个没有视觉效果的基页,我知道您要求从基类继承视觉效果。
不幸的是,在视觉页面继承方面,Windows Phone 有一个非常糟糕的故事。工具(设计人员)不喜欢它,而且很容易陷入难以诊断的问题。

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

抱歉,这是一个非常笼统的答案,但“最佳”解决方案将取决于您定义为“可变内容”的空间中的实际情况。

关于c# - WP8 如何创建基页并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19398590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com