Ant*_*jen 14 content-pages xamarin.forms
我的Xamarin项目中有多个ContentPage xaml文件.我想在每个ContentPage中嵌入一个共享的xaml片段.共享的xaml没有什么特别之处(它不需要做任何特定于平台的事情).它不应该像在ContentPage的xaml中嵌入标记以包含共享的xaml文件一样容易吗?有人能指出我正确的方向吗?
小智 14
非常感谢IdoT,它确实对我有用,但在添加了一些线之后.因为这有助于制作模板/自定义控件/子表单,可以在Xamarin.Forms中轻松添加/共享.
这是我基于你的建议的全部工作,所以它可以像其他人一样使用:
HeaderNavigationBar.cs
<?xml version="1.0" encoding="utf-8" ?>
<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="App9.MVC.Views.HeaderNavigationBar"
Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
Padding="10"
ackgroundColor="White">
<Button Text="Internal 1" />
<Button Text="Internal 2" />
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
如您所见,添加:
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
Run Code Online (Sandbox Code Playgroud)
在StackLayout
,它被宣布为MainView
.
External 1
using Xamarin.Forms;
namespace App9.MVC.Views
{
public partial class HeaderNavigationBar : StackLayout
{
public HeaderNavigationBar()
{
InitializeComponent();
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么对于将持有它/显示它的页面:
HeaderNavigationBar.cs
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:common="clr-namespace:App9.MVC.Views;assembly=App9"
x:Class="App9.MVC.Views.MainView">
<StackLayout Padding="0,0,0,20">
<common:HeaderNavigationBar>
<Button Text="External 1" />
</common:HeaderNavigationBar>
<Button Text="Test Button 1
x:Name="btnPage1"
Clicked="btnPage1_clicked" />
</StackLayout>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
您可以注意到,命名空间具有完整路径,位于StackLayout
:
xmlns:common="clr-namespace:App9.MVC.Views;assembly=App9"
Run Code Online (Sandbox Code Playgroud)
此外,您可以注意到有一个名为"外部1"的按钮,这也将显示内部按钮,因为控件是一个stacklayout,因此它可以处理添加更多控件.
如下所示:
对于另一页面内的页面:
再次感谢IdoT.
Ido*_*doT 13
您可以获取内容页面的父子项(例如,包装所有子项的StackLayout),将其放在外部xaml文件中,然后在每个内容页面中包含该组件.
*外部xaml文件将是StackLayout类型,而不是内容页面.
**编辑 - 添加了代码示例:
让我们添加一个标题StackLayout:我们在类后面添加一个代码:
public partial class HeaderNavigationBar
{
public HeaderNavigationBar()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
然后添加一个XAML代码:
<StackLayout x:Class="HeaderNavigationBar"
Orientation="Horizontal"
HorizontalOptions="FillAndExpand"
Padding="10"
BackgroundColor="White">
<Image Source="burger_icon"
HorizontalOptions="StartAndExpand"
Aspect="AspectFit">
<Image.GestureRecognizers>
<TapGestureRecognizer Command="{Binding SlideNavigationDrawerCommand}" />
</Image.GestureRecognizers>
</Image>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
最后,在您要重用组件的页面中 - 添加此引用:ContentPage
归档时间: |
|
查看次数: |
16761 次 |
最近记录: |