Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 如何向每个屏幕添加相同的控件?_Xaml_Windows Store Apps - Fatal编程技术网

Xaml 如何向每个屏幕添加相同的控件?

Xaml 如何向每个屏幕添加相同的控件?,xaml,windows-store-apps,Xaml,Windows Store Apps,制作第一个windows应用商店应用程序,需要在每个屏幕的顶部和底部显示一些控件。当我做一些WPF开发时,我创建了一个usercontrol并将其添加到每个页面。在windows应用商店应用程序中如何实现这一点 更具体地说,标题有一个公司徽标和一个状态图标,该图标会根据外部资源(空闲->运行等)进行更改。页脚是以某种线性方式进行导航的地方。此外,页脚还显示继续更新的日期和当前时间。中间的内容根据页脚中所选的内容而改变。有几种不同的方法来实现这一点。它真正重要的是您是否需要它是同一个控件(同一个实

制作第一个windows应用商店应用程序,需要在每个屏幕的顶部和底部显示一些控件。当我做一些WPF开发时,我创建了一个usercontrol并将其添加到每个页面。在windows应用商店应用程序中如何实现这一点


更具体地说,标题有一个公司徽标和一个状态图标,该图标会根据外部资源(空闲->运行等)进行更改。页脚是以某种线性方式进行导航的地方。此外,页脚还显示继续更新的日期和当前时间。中间的内容根据页脚中所选的内容而改变。

有几种不同的方法来实现这一点。它真正重要的是您是否需要它是同一个控件(同一个实例),或者它是否只是一个页眉/页脚控件,它被添加到每个页面中,并根据您在其中的内容进行更改

首先,如果这是可以合并到
命令栏
中的东西,我建议您首先尝试。然后,您只需为每个
命令栏
创建一个
静态资源
,并按照您希望的页眉和页脚样式进行设置。在根声明中声明每个页面时,只需设置:

Page.TopAppBar="{StaticResource MyHeader}"
Page.BottomAppBar="{StaticResource MyFooter}"
您可以将它们设置为粘性的,并以您喜欢的任何方式设置它们的样式,包括使用一个折叠的版本,其中只包含一个省略号(
)来隐藏/显示它。您可以将它们的所有数据存储在它们自己的ViewModel中,并让控件的DataContext直接绑定到VM,以便每个实例化都从相同的数据中提取

如果不能将它合并到一种类型的
命令栏
,那么我建议您创建自己的
页面
子类。它的
模板
将在自定义
页眉
页脚
对象中包装其
内容演示者
,很可能在
网格
面板中。这种方式每次都会创建它们的新副本,因此它们仍然需要绑定到ViewModel

我看到的最后一个选项是创建一个父
页面
,该页面与子类方法类似,具有包装内容的页眉和页脚。不过这次,让他们包装一个
框架
。然后,您所要做的就是调用
Frame。在该
框架上导航
,并且不会重新创建页眉/页脚控件,只会创建它们之间的内容

您可以在大多数Windows 8/8.1应用程序示例中看到类似的操作。它们创建一个内容框架,然后在样本的每一页中导航,通常是在导航
列表框中选择

如果您添加更多的信息,我可以尝试对答案进行调整,并提供更多的具体信息,但这些是我可以看到的实现您所描述内容的一般方法

更新:

根据你所说的,对我来说,似乎最简单的方法是使用第三个选项,一个
页面
包装一个
框架
。我建议这样做,因为这样一来,底部栏就很容易影响导航,而且听起来你不希望页眉或页脚受到页面转换的影响

如果您查看官方网站,您会注意到他们的主页声明如下:

<Page
     ...> 
    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
        <!-- Navigation and other stuff -->
        <Frame Grid.Column="1" x:Name="ScenarioFrame" Margin="30,50,30,0" /> 
    </Grid> 
</Page> 

这是您的基本主页声明。然后可以声明三行,一行用于页眉,一行用于内容,一行用于页脚。如果希望页脚弹出或弹出,可以将所描述的页脚完全构建到
命令栏中
,并将其包含在此页面中。无论何时需要导航,只需调用
ScenarioFrame。从代码隐藏处导航。您现在可以像普通应用程序一样创建
页面
s,并像其他应用程序一样导航到它们

这也应该是“通用的”,所以你应该能够将其包含在
Universal
应用程序中,只要你确保你的页脚缩放到屏幕大小(你应该已经这样做了)。如果您尝试这样做,请确保主页中的导航代码尽可能通用,并且大多数“专业导航”(如窗格和设置)都是在每个平台特定的页面上处理的,或者至少通过消息传递(如MvvmLight提供的)和
导航帮助器
类处理的


希望这有助于和快乐的编码

更新它以反映额外的信息