Xamarin базовый ContentPage с загрузкой (или общие ContentViews) - PullRequest
0 голосов
/ 01 февраля 2019

как я могу создать "базу" ContentPage, которая содержит, например, busy indicator, и сделать это Page базой для страниц друг друга внутри моего приложения?

Я пробовалсделать таким образом, но busy indicator не отображается.

Базовая страница:

<?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:core="clr-namespace:SgatMobileV3.Core;assembly=SgatMobileV3"
             x:Class="SgatMobileV3.Core.BasePage">
    <ContentPage.Content>
        <Grid>
            <core:VolosLoadingView />
        </Grid>
    </ContentPage.Content>
</ContentPage>

Индикатор занятости:

<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:core="clr-namespace:SgatMobileV3.Core;assembly=SgatMobileV3"
             core:LocatorViewModel.AutoWireViewModel="true"
             x:Class="SgatMobileV3.Core.VolosLoadingView"
             xmlns:busyindicator="clr-namespace:Syncfusion.SfBusyIndicator.XForms;assembly=Syncfusion.SfBusyIndicator.XForms">

    <Grid>
     <Grid BackgroundColor="LightGray" Opacity="0.6" IsVisible="True" />
     <busyindicator:SfBusyIndicator
        IsBusy="True"
        IsVisible="True"
        x:Name="loading" AnimationType="DoubleCircle"
        ViewBoxWidth="150" ViewBoxHeight="150"
        TextColor="Green" BackgroundColor="Transparent"
        HorizontalOptions="Center" VerticalOptions="Center"/>       
     </Grid>
</ContentView>

Страница:

<core:BasePage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:core="clr-namespace:SgatMobileV3.Core;assembly=SgatMobileV3"
             core:LocatorViewModel.AutoWireViewModel="true"
             x:Class="SgatMobileV3.Views.MockPage">

    <ContentPage.Content>
        <Grid>
            <Button Text="Welcome to Xamarin.Forms! 1"
                    VerticalOptions="CenterAndExpand" 
                    HorizontalOptions="CenterAndExpand"
                    Command="{Binding Test_ClickCommand}" />
        </Grid>
    </ContentPage.Content>
</core:BasePage>

Я попытался включить образец label в базовую страницу , но ничего не появляется.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

как я могу создать "базовую" ContentPage, которая содержит, например, индикатор занятости, и сделать эту страницу основой для страниц друг друга

Если хотите Создание ControlTemplate на уровне страницы, создавая ControlTemplate экземпляров на уровне приложений, их также можно создавать на уровне страницы, как показано в следующем примере кода :

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="SimpleTheme.HomePage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <ControlTemplate x:Key="TealTemplate">
                ...
            </ControlTemplate>
            <ControlTemplate x:Key="AquaTemplate">
                ...
            </ControlTemplate>
        </ResourceDictionary>
    </ContentPage.Resources>
    <ContentView ... ControlTemplate="{StaticResource TealTemplate}">
        ...
    </ContentView>
</ContentPage>

При добавленииControlTemplate на уровне страницы, ResourceDictionary добавляется в ContentPage , and then the Экземпляры ControlTemplate включены в ResourceDictionary.

А также могут использовать код из документаимеет образец например.

0 голосов
/ 01 февраля 2019

Вы можете сделать это, добавив элемент управления в код (в файл BasePage.cs), я не думаю, что для этого есть решение XAML.

...