Как сделать привязываемый вид - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь создать собственное представление, просто в виде заголовка и тела, оба они являются представлением, чтобы иметь возможность, например, содержать StackLayout. На Xaml страницы, использующей это пользовательское представление, я хотел бы написать что-то вроде этого:

                <Controls:MyBox>
                    <Controls:MyBox.Header>
                        <StackLayout>

                        </StackLayout>
                    </Controls:MyBox.Header>
                    <Controls:MyBox.Body>
                        <StackLayout>

                        </StackLayout>
                    </Controls:MyBox.Body>
                </Controls:MyBox>

А мой пользовательский элемент управления в xaml выглядит примерно так:

<StackLayout xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="My.Controls.MyBox"
             x:Name="This"
             Padding="10"
             Spacing="0"
             >
    <StackLayout>
        <StackLayout>
            <View x:Name="Header" />
        </StackLayout>
        <StackLayout>
            <View x:Name="Body" />
        </StackLayout>
    </StackLayout>
</StackLayout>

как сделать содержимое тега Controls:MyBox.Header Связано с содержимым <View x:Name="Body" />

1 Ответ

0 голосов
/ 25 марта 2019

В Xamarin Forms он не имеет пользовательского контроля, как в WPF. Но вы можете добиться чего-то подобного, используя ContentView.

1.Создайте заголовок в ContentView.

<?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="App4.UserControl">
  <ContentView.Content>
      <StackLayout BackgroundColor="Red">
          <Label Text="This is header" />
      </StackLayout>
  </ContentView.Content>
</ContentView>
  1. Создание ContentPage и ссылка на пространство имен Header ContentView Затем с помощью этого разместите элемент управления там, где вы хотите на своей странице

    <?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:local="clr-namespace:App4"
    
        x:Class="App4.MainPage" BackgroundColor="LightSteelBlue">
        <ContentPage.Content>
            <StackLayout>
                <!-- Header-->
                <StackLayout>
                    <local:UserControl />
                </StackLayout>
    
                <!-- body -->
                <StackLayout BackgroundColor="Blue">
                    <Label Text="This is body"></Label>
                </StackLayout>
            </StackLayout>
        </ContentPage.Content
    </ContentPage>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...