<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="ex_BindingToA2dArray_v1.MainPage">
    <ContentPage.Resources>
        <ResourceDictionary>
            <x:Double x:Key="CellWidth">100</x:Double>
            <x:Double x:Key="CellHeight">100</x:Double>
            <x:Double x:Key="VerticalSpacing">10</x:Double>
            <x:Double x:Key="HorizontalSpacing">10</x:Double>
            <toolkit:MultiMathExpressionConverter x:Key="multiMathExpressionConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
    <CollectionView ItemsSource="{Binding Matrix.FlatMatrix2d}"
                    BackgroundColor="Azure"
                    HorizontalOptions="Center"
                    VerticalOptions="Center">
        <CollectionView.HeightRequest>
            <MultiBinding Converter="{StaticResource multiMathExpressionConverter}" ConverterParameter="x0 * x1 +(x0 - 1) * x2 ">
                <Binding Path="Matrix.NbRows" />
                <Binding Source="{StaticResource CellHeight}" />
                <Binding Source="{StaticResource VerticalSpacing}" />
            </MultiBinding>
        </CollectionView.HeightRequest>
        <CollectionView.WidthRequest>
            <MultiBinding Converter="{StaticResource multiMathExpressionConverter}" ConverterParameter="x0 * x1 +(x0 - 1) * x2 ">
                <Binding Path="Matrix.NbColumns" />
                <Binding Source="{StaticResource CellWidth}" />
                <Binding Source="{StaticResource HorizontalSpacing}" />
            </MultiBinding>
        </CollectionView.WidthRequest>
        <CollectionView.ItemsLayout>
            <GridItemsLayout Orientation="Vertical"
                             Span="{Binding Matrix.NbColumns}"
                             HorizontalItemSpacing="{StaticResource HorizontalSpacing}"
                             VerticalItemSpacing="{StaticResource VerticalSpacing}"/>
        </CollectionView.ItemsLayout>
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <Border WidthRequest="{StaticResource CellWidth}"
                        HeightRequest="{StaticResource CellHeight}"
                        BackgroundColor="DarkSalmon">
                    <Label Text="{Binding}"
                           TextColor="Black"
                           FontSize="Medium"
                           HorizontalTextAlignment="Center"
                           VerticalTextAlignment="Center"/>
                </Border>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>

</ContentPage>
