Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Xamarin表单-如何在一个xaml中显示另一个xaml中的内容

Xamarin表单-如何在一个xaml中显示另一个xaml中的内容
EN

Stack Overflow用户
提问于 2017-01-27 03:47:27
回答 1查看 3.1K关注 0票数 1

我习惯了Android开发,在完成我认为是一项简单任务时遇到了一些困难。

我有一个名为ContainerView.xaml的MasterDetailPage。

主页是我的导航栏(称为NavbarView.xaml)。

详细信息应该是一个具有固定标题栏的页面,并且我可以交换每个用户的选择。

详细信息页面名为MainView.xaml。

我想在顶部显示的标题是TitleBarView.xaml。

然后我有很多内容页面,比如Page1View.xaml。

在我的ContainerView.xaml中:

代码语言:javascript
代码运行次数:0
复制
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"             
                  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"       
                  x:Class="MyApp.ContainerView"
                  IsGestureEnabled="True"
                  MasterBehavior="Popover"
                  Title="MasterDetail Page">
  <MasterDetailPage.Master>
  </MasterDetailPage.Master>
  <MasterDetailPage.Detail>
  </MasterDetailPage.Detail>  
</MasterDetailPage>

在我的NavbarView.xaml中-这是主控

代码语言:javascript
代码运行次数:0
复制
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="MyApp.NavBarView"
             Title="Nav Bar">  
  <ContentPage.Content>  
    <StackLayout Orientation="Vertical">
      <Label Text="{Binding Item1}"/>
      <Button Text="Options" Command="{Binding Option1Command}"/>
    </StackLayout >
  </ContentPage.Content>  
</ContentPage>

在我的MainView.xaml中-这是详细信息

代码语言:javascript
代码运行次数:0
复制
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.MainView"
             Title="Main View">
  <ContentPage.Content>
  // what to put here to show the TitleBarView.xaml?
  // what to put here to show my content xaml pages?
  </ContentPage.Content>
</ContentPage>

在我的TitleBarView.xaml

代码语言:javascript
代码运行次数:0
复制
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.TitleBarView">
  <ContentView.Content>    
    <StackLayout Orientation="Horizontal">
      <Label Text="{Binding Item1}"/>
      <Button Text="Options" Command="{Binding OptionsCommand}"/>
    </StackLayout>    
  </ContentView.Content>
</ContentView>

和一个通用的内容视图,当然还有很多其他的我想要在它们之间切换

代码语言:javascript
代码运行次数:0
复制
<ContentView xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.Page1View">
  <ContentView.Content>
    <StackLayout Orientation="Vertical">
      <Label Text="{Binding Info}"/>
      <Button Text="Log In" Command="{Binding GoToPage2Command}"/>
    </StackLayout >
  </ContentView.Content>
</ContentView>

我正在使用MVVM模型,并有此代码,但似乎无法获得基本的工作。母版页显示正常。如果详细信息页面只是一个简单的页面,它可以工作,但我不知道如何插入TitleBar和交换“内容”。

代码语言:javascript
代码运行次数:0
复制
ContainerView containerPage = new ContainerView(); 
ContainerViewModel containerVM = new ContainerViewModel();
containerPage.BindingContext = containerVM;

NavBarView navigationBar = new NavBarView();
navigationBar.Title = "Navigation Bar"; // required, otherwise I get an exception.
NavBarViewModel navigationBarVM = new NavBarViewModel();
navigationBar.BindingContext = navigationBarVM;

MainView mainView = new MainView();
mainView.Title = "MainView";
MainViewModel mainViewVM = new MainViewModel();
mainView.BindingContext = mainViewVM;

TitleBarView titleBar = new TitleBarView();
TitleBarViewModel titleBarVM = new TitleBarViewModel();
titleBar.BindingContext = titleBarVM;

Page1View page1 = new Page1View();
Page1ViewModel page1VM = new Page1ViewModel();
page1.BindingContext = page1VM;

mainView.Content = new StackLayout()
{
    Orientation = StackOrientation.Vertical,
    Children = 
    {
        new Label { Text = "I'm Content!" },
        new Label { Text = "I'm Content!" },
        //titleBar.Content,
        //loginView.Content
    }
};

containerPage.MasterBehavior = MasterBehavior.Popover;
containerPage.Master = navigationBar;
containerPage.Detail = new NavigationPage(mainView);

我确信我错过了一个基本的概念。任何帮助都将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 12:21:23

Xaml可以实例化在代码或Xaml中定义的任何控件,因此对于TitleBarView,可以通过以下方式在任何Xaml中实例化它

代码语言:javascript
代码运行次数:0
复制
<xmlnsprefix:TitleBarView />

问题在于设置正确的xmlnsprefix。每个xaml文件都定义了几个xmln,您可以添加自己的xmln,如下所示:

代码语言:javascript
代码运行次数:0
复制
xmlns:local="clr-namespace:MyApp"

这意味着Xml命名空间“local”将引用当前程序集中的clr命名空间“MyApp”。

所以你的MainView变成了:

代码语言:javascript
代码运行次数:0
复制
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
   xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
   xmlns:local="clr-namespace:MyApp"
   x:Class="MyApp.MainView"
   Title="Main View">
  <ContentPage.Content>
   <local:TitleBarView />
  </ContentPage.Content>
</ContentPage>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41886679

复制
相关文章
解读WPF中的Xaml
这篇文章主要分享从源代码角度解读wpf中xaml。由于源码查看起来错综复杂“随便找一个对象按下F12就是一个新的世界”,看源码的感觉就是在盗梦空间里来回穿梭;所以也是耗费很长的时间去阅读源码然后根据自己的理解编写文章和贴出部分关键源码。
JusterZhu
2022/12/07
1.5K0
解读WPF中的Xaml
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
本文来告诉大家一个好用的控件库,这个控件库可以方便用在自己编写示例项目中使用。使用 ShowMeTheXAML 控件库可以将某段 XAML 内容作为字符串文本内容显示出来,方便让其他开发者看到界面以及对应的内容
林德熙
2021/04/02
1.1K0
dotnet 使用 ShowMeTheXAML 显示 WPF 的 XAML 控件内容
[UWP]XAML中的响应式布局技术
响应式布局的概念是一个页面适配多个终端及不同分辨率。在针对特定屏幕宽度优化应用 UI 时,我们将此称为创建响应式设计。WPF设计之初响应式设计的概念并不流行,那时候大部分网页设计师都按着宽度960像素的标准设计。到了UWP诞生的时候响应式布局已经很流行了,所以UWP提供了很多响应式布局的技术,这篇文章简单总结了一些响应式布局常用的技术,更完整的内容请看文章最后给出的参考网站。
dino.c
2020/01/14
2.3K0
[UWP]XAML中的响应式布局技术
学习WPF——了解WPF中的XAML
XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和App
liulun
2018/01/12
2K0
XAML格式化工具:XAML Styler
在开发WPF应用过程中,编写XAML时需要手动去缩进或者换行,随着时间的推移或者参与开发的人增多,XAML文件内容的格式会越来越乱。要么属性全都写在一行,内容太宽一屏无法完整展现;要么属性单独占一行,难以直观的看清结构;另外xaml元素的属性无序,重要属性查找困难,手动维护属性使之规律有序也比较费时。
czwy
2023/10/22
7570
XAML格式化工具:XAML Styler
UWP WPF 解决 xaml 设计显示异常
例如我创建一个用户控件 TsjcyubtnTtqtjem 那么就可以在构造函数添加下面代码
林德熙
2022/08/04
7480
使用 XAML 格式化工具:XAML Styler
刚入门 WPF/UWP 之类的 XAML 平台,首先会接触到 XAML 这一新事物。初学 XAML 时对它的印象可以归纳为一个词:一坨。
dino.c
2021/01/21
1.3K0
UWP WPF 解决 xaml 设计显示异常
例如我创建一个用户控件 TsjcyubtnTtqtjem 那么就可以在构造函数添加下面代码
林德熙
2018/09/19
1.1K0
UWP WPF 解决 xaml 设计显示异常
使用Rx Framework实现XAML中的物体拖动
酝酿两年之后,微软发布了Reactive Extensions(Rx)库。Rx把事件驱动UI与LINQ、并发性和异步调用结合起来。
yoyofx
2018/09/05
7210
XAML常用控件
Window控件是一个基础,它是其它控件的容器,我们可以通过修改其中的一些属性来设置窗体的显示效果,下面说一些最常用的属性:
宿春磊Charles
2021/11/05
1.1K0
javascript表单提交的内容显示在表格中
实现三个文本域的内容提交之后显示在表格中,代码直接用文本文件运行,记得后缀改为.html 运行结果
别团等shy哥发育
2023/02/27
7.5K0
javascript表单提交的内容显示在表格中
Windows10-UWP中设备序列显示不同XAML的三种方式[3]
Windows10-UWP(Universal Windows Platform)增加一个新特性设备序列(DeviceFamily)特定视图,它允许开发者为指定的设备序列定义指定的XAML显示,(Desktop、Mobile、tablet、Iot等)。 如果你想为不同的设备序列显示较多不一样的UI时,它是非常有用的。当然,使用RelativePanel、VisualStateTriggers也是非常好用的。但倘若你的UI有非常多的不一样时,XAML代码会变的非常臃肿。 这时就可以单独使用一个完整的XAML页面,然后和其他XAML页面共享后台逻辑代码。
蘑菇先生
2018/07/24
7310
Windows10-UWP中设备序列显示不同XAML的三种方式[3]
剖析XAML语言
在wpf中,UI部分使用xaml语言来编写,xaml语言是由xml语言派生而来的语言,所以在xaml中我们可以看到很多熟悉的特点:它也是使用标签构建页面,一个标签就对应一个对象,标签与标签之间或为并列关系,或为包含关系。
宿春磊Charles
2021/11/05
6430
Windows10-UWP中设备序列显示不同XAML的三种方式[3]
概述 Windows10-UWP(Universal Windows Platform)增加一个新特性设备序列(DeviceFamily)特定视图,它允许开发者为指定的设备序列定义指定的XAML显示,(Desktop、Mobile、tablet、Iot等)。 如果你想为不同的设备序列显示较多不一样的UI时,它是非常有用的。当然,使用RelativePanel、VisualStateTriggers也是非常好用的。但倘若你的UI有非常多的不一样时,XAML代码会变的非常臃肿。 这时就可以单独使用一个完整的X
蘑菇先生
2018/05/21
7540
xaml 添加 region
在 VisualStudio 2015 和 VisualStudio 2017 微软支持在 xmal 使用 region
林德熙
2019/03/13
7220
xaml 添加 region
xaml 添加 region
在 VisualStudio 2015 和 VisualStudio 2017 微软支持在 xmal 使用 region
林德熙
2018/09/18
1.3K0
xaml 添加 region
Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误
在 Xamarin Forms 从 4.7 到 4.8.0.1560 版本,在 Xamarin Forms 构建 WPF 版项目也许会提示 XamlC error XFC0000 : Cannot resolve type “Application” 构建失败
林德熙
2022/08/12
1.9K0
Xamarin Forms 构建 WPF 版项目失败提示 XamlC error XFC0000 错误
微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音
最近在继续倒腾WPF的项目,继续使用Caliburn.Micro和Xceed来堆代码。每次调试xaml上的binding,都有种要疯的赶脚。
Enjoy233
2021/12/23
1.3K0
微软XAML Studio - WPF, UWP, Xamarin等技术开发者的福音
XAML常用控件2
除了我们之前讲过的Grid,StackPanel,Border布局控件,xaml中还有如下几个布局控件:
宿春磊Charles
2021/11/05
2.3K0
Wpf读写Xaml文件
XamlWriter的Save函数,会将指定的对象和其属性序列化 成Xaml字符串。
Kiba518
2021/09/26
9020
Wpf读写Xaml文件

相似问题

如何在一个xaml中显示另一个xaml中的内容

120

xaml - Xamarin表单中相对布局的包装内容属性

10

使用XAML不能在Xamarin表单中显示图像?

40

XAML Xamarin表单中的基页

05

如何在MVVM的Xaml Xamarin表单上显示图像

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文