Xamarin将分隔线添加到网格

时间:2019-11-18 20:30:52

标签: xamarin xamarin.forms xamarin.android xamarin.ios

我有问题。我想使用以下代码创建此ListView:

<?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"
             mc:Ignorable="d"
             x:Class="MyApp.HomePage">
    <ContentPage.Content>
        <ListView x:Name="ListViewMain" VerticalOptions="FillAndExpand" BackgroundColor="#212121" SelectionMode="None">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid x:Name="GridMain">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="40" x:Name="Row0_Height"/>
                                <RowDefinition Height="180" x:Name="Row1_Height"/>
                                <RowDefinition Height="180" x:Name="Row2_Height"/>
                                <RowDefinition Height="40" x:Name="Row3_Height"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="40" x:Name="Column0_Width" />
                                <ColumnDefinition Width="*" x:Name="Column1_Width" />
                                <ColumnDefinition Width="40" x:Name="Column2_Width" />
                            </Grid.ColumnDefinitions>
                            <Label Text="{Binding Creator}" TextColor="White" FontSize="Body" FontAttributes="Bold" Grid.Column="1" Grid.Row="0" VerticalOptions="Center" HorizontalOptions="Start"/>
                            <Image Source="VoteUp.png" VerticalOptions="End" HorizontalOptions="Center" Grid.Row="1" Grid.Column="0">
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="imgVoteUp_Clicked" />
                                </Image.GestureRecognizers>
                            </Image>
                            <Image Source="VoteDown.png" VerticalOptions="Start" HorizontalOptions="Center" Grid.Row="2" Grid.Column="0">
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="imgVoteDown_Clicked" />
                                </Image.GestureRecognizers>
                            </Image>
                            <Image Source="{Binding ImageLocation}" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2" BackgroundColor="AliceBlue" VerticalOptions="Fill" HorizontalOptions="Fill"/>
                            <Image Source="Favorite.png" Grid.Row="3" Grid.Column="1" HorizontalOptions="Start">
                                <Image.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="imgFavorite_Clicked" />
                                </Image.GestureRecognizers>
                            </Image>
                            <Image Source="Send_Dark.png" Grid.Row="3" Grid.Column="1" HorizontalOptions="End"/>
                            <Image Source="Save_Dark.png" Grid.Row="3" Grid.Column="2" HorizontalOptions="End"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </ContentPage.Content>
</ContentPage>

但是现在我想在第一个Label标记上方添加一行。要创建该行,请使用以下代码:

<Label HeightRequest="1" BackgroundColor="#E3E3E3" />

但是我不知道将其放置在哪里以及如何放置,因为它是网格。我想将其添加到网格之前,但这给了我错误:

  

“视图”属性设置了多次。

我在做什么错,我该如何解决?

1 个答案:

答案 0 :(得分:1)

我将使用BoxView而不是Label。您可以使用这种布局,将BoxViewLabel放在同一行中,但要垂直对齐

   

您可以尝试的其他方法

  1. Grid的另一行添加到BoxView
  2. 使用GridStackLayout放在BoxView