XAML Zoznam


Je možné vytvoriť vlastný zoznam pomocou zápisu XAML-u

Vytvára sa rovnako ako akcia typu NavigateTo so spôsobom zobrazenia ako ListView.

Navyše sa v záložke MetaData prídáva hodnota LTWDAction s názvom ItemLoadFromXaml (pre nastavenie šablóny položky zoznamu), HeaderLoadFromXaml (pre nastavenie šablóny hlavičky zoznamu) a FooterLoadFromXaml (pre nastavenie šablóny pätičky zoznamu), kde to Value sa dáva príslušný XAML kód.

Príklad HeaderLoadFromXaml

<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             mc:Ignorable="d"
             xmlns:views="clr-namespace:E1C.Views;assembly=E1C"
             xmlns:app="clr-namespace:E1C"
             xmlns:resources="clr-namespace:E1C.Resx"
             x:Class="E1C.Pages.EditPageCustom">
    <ContentView.Content>
        <Grid>
            <Image Aspect="AspectFill" HeightRequest="80" Source="https://erpio.app/examples/zamestnanci.jpg" />
            <Label VerticalOptions="End" HorizontalOptions="End" FontSize="20" FontAttributes="Bold" TextColor="Red" Text="" Margin="10,10" />
        </Grid>
    </ContentView.Content>
</ContentView>

Priklad ItemLoadFromXaml

<ContentView
  xmlns="http://xamarin.com/schemas/2014/forms"
  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  xmlns:rating="clr-namespace:Syncfusion.SfRating.XForms;assembly=Syncfusion.SfRating.XForms"
>
<ContentView.Content>
<Grid RowSpacing="0" HeightRequest="68">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
    <RowDefinition Height="1" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>
<Frame HasShadow= "False"  Grid.Row="0" Grid.Column="0" Grid.RowSpan="2"  CornerRadius="28" Margin="5" BorderColor="{Binding Values[ResourceColor]}" BackgroundColor="{Binding Values[ResourceColor]}"  WidthRequest="50" HeightRequest="50" IsClippedToBounds="True" Padding="3">
<Frame  HasShadow= "False"  CornerRadius="25" Margin="0" BackgroundColor="{Binding Values[ResourceColor]}"  WidthRequest="50" HeightRequest="50" IsClippedToBounds="True" Padding="0">
                <Image Aspect="AspectFill" BackgroundColor="Transparent" WidthRequest="50" HeightRequest="50" Source="{Binding Path=Values[Obrazek],
                                    Converter={StaticResource Base64ToImageFieldConverter}, TargetNullValue='https://erpio.app/examples/person.png'}" >
                </Image>
</Frame>
</Frame>
<Label Text="{Binding Values[PriezviskoMeno]}" Grid.Row="0" Grid.Column="1" VerticalOptions="Center" TextColor="Black" Margin="5" />
<rating:SfRating Grid.Row="0" Grid.Column="2" HorizontalOptions="End" ItemCount="3" ItemSize="20" Value="{Binding Values[HodnotenieCislo]}" ReadOnly="True" Margin="5" />
<Label Text="{Binding Values[Cislo], StringFormat='Osobné číslo: {0}'}" Grid.Row="1" Grid.Column="1" TextColor="Gray" FontSize="10" Margin="5,0,5,5" />
<BoxView Color="Silver" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" HeightRequest="1" />
</Grid>
</ContentView.Content>
</ContentView>

Výsledok tohto príkladu:

Štandardné prvky XAML-u je možné použiť na grafickú úpravu zobrazeného listu.

Hodnoty sa priraďujú pomocou Data Binding-u (pozri príklad alebo dokumentáciu https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/basic-bindings).

Na prácu s hodnotami parametrov je možné použiť predpripravené typy polí v ERPIO App v namespace E1C.Views (pozri spôsob použitia v príklade), ktoré reagujú na nastavenia parametrov:

  • EditEntry – jednoriadkové textové pole – binding property Text
  • EditEditor – viacriadkové textové pole – momentálne nepodporované
  • EditDateTimeView – podľa nastavenia parametra buď pole s možnosťou výberu dátumu alebo dátum a času – momentálne nepodporované
  • EditBarCode- momentálne nepodporované
  • EditFileView- momentálne nepodporované
  • EditGPSView- momentálne nepodporované
  • EditCheckBox – binding property IsToggled
  • EditNumericUpDownButtons – binding property Value
  • EditSetView- momentálne nepodporované

Pre Header a Footer je možné využiť binding na property FirstRow, kde sú hodnoty z prvého riadku zoznamu, príklad {Binding FirstRow[NazovStlpca]}.

Pre využitie zoznamu ako editora, je potrebné pridať do metadát ešte hodnotu s názvom SaveList s ID akcie, ktorá bude ukladať hodnoty

{
"ActionID": 23499
}

ItemLoadFromXaml

<ContentView
  xmlns="http://xamarin.com/schemas/2014/forms"
  xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  xmlns:views="clr-namespace:E1C.Views;assembly=E1C"
  xmlns:app="clr-namespace:E1C"
  xmlns:resources="clr-namespace:E1C.Resx"
>
<ContentView.Content>
<Grid RowSpacing="0" HeightRequest="85">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
    <RowDefinition Height="*" />
    <RowDefinition Height="1" />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>


<Label Text="{Binding Values[Nazev1]}" Grid.Row="0" Grid.Column="0" HorizontalOptions="Start" VerticalOptions="Center" TextColor="Black" FontSize="12"  Margin="5" />
<!--
<views:EditEntry Text="{Binding Values[Nazev1]}" Grid.Row="0" Grid.Column="0" HorizontalOptions="Start" VerticalOptions="Center"  Margin="5" />
-->

<Label Text="{Binding Values[MJEvidence], StringFormat='Merná jednotka: {0}'}"  Grid.Row="1" Grid.Column="0" HorizontalOptions="Start" FontSize="12"  TextColor="Gray" Margin="5,0,5,0" />

<Label Text="{Binding Values[RegCis], StringFormat='Registračné číslo: {0}'}" Grid.Row="2" Grid.Column="0" HorizontalOptions="Start"  TextColor="Gray" FontSize="10" Margin="5" />

<views:EditNumericUpDownButtons Value="{Binding Values[Mnozstvi]}" Grid.Column="1" Grid.Row="0" Grid.RowSpan="3" HorizontalOptions="End" VerticalOptions="Center" Margin="5"></views:EditNumericUpDownButtons>

<BoxView Color="Silver" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" HeightRequest="1" />

</Grid>
</ContentView.Content>
</ContentView>
This image has an empty alt attribute; its file name is image-8.png