15

Xamarin プロジェクトに複数の ContentPage xaml ファイルがあります。各 ContentPage に xaml の共有部分を埋め込みたい。xaml の共有部分について特に特別なことは何もありません (プラットフォーム固有のことを行う必要はありません)。ContentPage の xaml にタグを埋め込んで共有 xaml ファイルを含めるのと同じくらい簡単ではないでしょうか? 誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

18

どうもありがとう IdoT, それは私にとってはうまくいきましたが、いくつかの行を追加した後. これは、テンプレート/カスタム コントロール/サブ フォームの作成に役立ち、Xamarin.Forms 間で簡単に追加/共有できます。

これがあなたの提案に基づく私の完全な作業です。他の人にそのまま使用できます。

HeaderNavigationBar.xaml

<?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>

ご覧のとおり、次を追加しました。

xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

ではHeaderNavigationBar.cs、次のように宣言されていStackLayoutます。

HeaderNavigationBar.cs

using Xamarin.Forms;

namespace App9.MVC.Views
{
    public partial class HeaderNavigationBar : StackLayout
    {
        public HeaderNavigationBar()
        {
            InitializeComponent();
        }
    }
}

次に、それを保持/表示するページの場合:

MainView.xaml

<?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>

お気づきのように、名前空間にはフル パスが含まれていMainViewます。

xmlns:common="clr-namespace:App9.MVC.Views;assembly=App9"

また、 と呼ばれるボタンがあることに気付くでしょExternal 1う。これは、コントロールが StackLayout であるため、内部ボタンにも表示されるため、さらにコントロールを追加できます。

スクリーンショット:

ここに画像の説明を入力

また、別のページ内のページの場合:

改めてIdoTに感謝します。

于 2016-05-03T19:39:35.497 に答える
15

親の子ContentPage(たとえば、すべての子をラップするStackLayout ) を取得し、それを外部の xaml ファイルに配置してから、そのコンポーネントを ContentPages のそれぞれに含めることができます。

外部 xaml ファイルは、 ContentPageではなく、 StackLayoutタイプになります。

編集- コードサンプルを追加しました:

ヘッダー StackLayout を追加しましょう: コード ビハインド クラスを追加します。

public partial class HeaderNavigationBar 
{
    public HeaderNavigationBar()
    {
        InitializeComponent();
    }
}

次に、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>

最後に、コンポーネントを再利用したいページに、次の参照を追加します: <HeaderNavigationBar />.

于 2015-05-24T08:04:04.333 に答える