Страница форм Xamarin обрезается - PullRequest
0 голосов
/ 07 апреля 2020

У меня проблема. В моем приложении у меня есть StackLayout с ListView под ним, поэтому, когда я щелкаю на стеке, вид списка скрывается или отображается. Я также сделал это ниже ListView с CollectionView. Теперь для ListView у меня нет проблем, но когда отображается CollectionView, он обрезает мой экран поверх ListView. Я покажу вам 2 картинки. Это мой экран, когда CollectionView скрыт, потому что все так, как я хочу: enter image description here

Но вот как показано CollectionView: enter image description here

Теперь я понятия не имею, что вызывает это, потому что я просто хочу, чтобы CollectionView продолжал падать, и когда мне нужно, вы можете прокрутить вниз, чтобы показать больше, если у вас много устройств. Вот мой код CollectionView:

<?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:d="http://xamarin.com/schemas/2014/forms/design"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:controls="clr-namespace:MyApp.Tools;assembly=MyApp"
             mc:Ignorable="d"
             x:Class="MyApp.Pages.Devices"
             BackgroundImageSource="background">

    <StackLayout Orientation="Vertical">
        <StackLayout HeightRequest="70" BackgroundColor="#013252" Orientation="Horizontal">
            <Frame VerticalOptions="CenterAndExpand" HeightRequest="30" Margin="15,0,0,0" BackgroundColor="Transparent" Padding="0">
                <Image Source="menu" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" HeightRequest="25"/>
            </Frame>

            <Label Text="Devices" TextColor="White" FontSize="25" VerticalOptions="CenterAndExpand" Margin="10,0,0,0" />

            <Frame VerticalOptions="FillAndExpand" HorizontalOptions="EndAndExpand" Margin="0,0,15,0" BackgroundColor="Transparent" Padding="0">
                <Image Source="plus" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" HeightRequest="25" />
                <Frame.GestureRecognizers>
                    <TapGestureRecognizer Tapped="addDevice_Clicked" />
                </Frame.GestureRecognizers>
            </Frame>
        </StackLayout>

        <StackLayout Orientation="Vertical">

            <StackLayout Orientation="Horizontal" HeightRequest="35" Margin="20,0,20,0">
                <Image Source="lightbulb" HorizontalOptions="Start" VerticalOptions="CenterAndExpand"/>
                <Label Text="{Binding deviceCount, StringFormat='Devices ({0})'}" TextColor="White" FontSize="20" VerticalOptions="CenterAndExpand" Margin="10,0,0,0"/>
                <Image Source="list_arrow_down" HorizontalOptions="EndAndExpand" VerticalOptions="CenterAndExpand" x:Name="imgArrowHeaderDevices"/>
                <StackLayout.GestureRecognizers>
                    <TapGestureRecognizer Tapped="headerDevices_Clicked" />
                </StackLayout.GestureRecognizers>
            </StackLayout>
            <ListView ItemsSource="{Binding knownDeviceList}" RowHeight="70" SelectionMode="None" ItemTapped="rowDevice_Clicked" x:Name="lstDevices">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <AbsoluteLayout HeightRequest="60" Margin="20,5,20,5">
                                <StackLayout Opacity="0.1" BackgroundColor="White"
                            AbsoluteLayout.LayoutBounds="0,0,1,1" 
                            AbsoluteLayout.LayoutFlags="All" />
                                <StackLayout AbsoluteLayout.LayoutBounds="0,0,1,1" 
                            AbsoluteLayout.LayoutFlags="All">
                                    <Grid RowSpacing="0">
                                        <Grid.RowDefinitions>
                                                <RowDefinition Height="28" />
                                                <RowDefinition Height="28" />
                                        </Grid.RowDefinitions>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="60" />
                                            <ColumnDefinition Width="*" />
                                            <ColumnDefinition Width="60" />
                                        </Grid.ColumnDefinitions>


                                        <controls:IconView Source="{Binding DeviceImage}" Grid.RowSpan="2" Grid.Column="0" Margin="5" Foreground="{Binding DeviceImageColor}" />


                                        <Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" FontSize="18" TextColor="White" />
                                        <Label Grid.Row="1" Grid.Column="1" Text="{Binding StateShown}" FontSize="16" TextColor="White" />

                                        <controls:IconView x:Name="btnPower" Source="power" Grid.RowSpan="2" Grid.Column="2" Margin="5"
                                                Foreground="{Binding PowerStateColor}">
                                            <controls:IconView.GestureRecognizers>
                                                    <TapGestureRecognizer Command="{Binding Path=BindingContext.cmdTogglePower, Source={x:Reference lstDevices}}" CommandParameter="{Binding Id}" />
                                            </controls:IconView.GestureRecognizers>
                                        </controls:IconView>
                                    </Grid>
                                </StackLayout>
                            </AbsoluteLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>


            <StackLayout Orientation="Horizontal" HeightRequest="35" Margin="20,0,20,0">
                <Image Source="scene_icon" HorizontalOptions="Start" VerticalOptions="CenterAndExpand"/>
                <Label Text="{Binding sceneCount, StringFormat='Scenes ({0})'}" TextColor="White" FontSize="20" VerticalOptions="CenterAndExpand" Margin="10,0,0,0"/>
                <Image Source="list_arrow_down" HorizontalOptions="EndAndExpand" VerticalOptions="CenterAndExpand" x:Name="imgArrowHeaderScenes"/>
                <StackLayout.GestureRecognizers>
                    <TapGestureRecognizer Tapped="headerScenes_Clicked" />
                </StackLayout.GestureRecognizers>
            </StackLayout>
            <CollectionView ItemsSource="{Binding sceneList}" SelectionMode="Single" SelectionChanged="rowScene_Clicked" x:Name="lstScenes" >
                <CollectionView.ItemsLayout>
                    <GridItemsLayout Orientation="Vertical"
                    Span="2" />
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="70" />
                            </Grid.RowDefinitions>

                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>

                            <AbsoluteLayout HeightRequest="60" Margin="20,5,20,5" Grid.Row="0" Grid.Column="0">
                                <StackLayout Opacity="0.1" BackgroundColor="White"
                        AbsoluteLayout.LayoutBounds="0,0,1,1" 
                        AbsoluteLayout.LayoutFlags="All" />
                                <StackLayout AbsoluteLayout.LayoutBounds="0,0,1,1" 
                        AbsoluteLayout.LayoutFlags="All">
                                    <Grid RowSpacing="0">
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="60" />
                                        </Grid.RowDefinitions>

                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="60" />
                                            <ColumnDefinition Width="*" />
                                        </Grid.ColumnDefinitions>


                                        <Frame Grid.Row="0" Grid.Column="0" BackgroundColor="#009fe3" VerticalOptions="CenterAndExpand" WidthRequest="50" HeightRequest="50" CornerRadius="35" Margin="5" Padding="0">
                                            <Label Text="{Binding FirstLetter}" TextColor="White" FontSize="25" VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand" />
                                        </Frame>

                                        <Label Grid.Row="0"  Grid.ColumnSpan="2" Text="{Binding Name}" FontSize="18" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand"/>
                                    </Grid>
                                </StackLayout>
                            </AbsoluteLayout>
                        </Grid>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

        </StackLayout>
    </StackLayout>
</ContentPage>

Что я делаю не так?

...