【发布时间】:2019-02-17 21:30:02
【问题描述】:
我有一个网格,我在其中添加了 moreTileView。但它只是在第一行和第一列呈现(相互重叠)。我想要的是在新行和/或新列中呈现每个新的“图块”。也许这不是最好的方法。如果你们对如何实现我想要做的事情有一个好的想法,请告诉我。
MoreTilePage.xaml
<ContentPage.Content>
<ScrollView>
<StackLayout x:Name="MoreTileViewHolder" />
<ScrollView>
</ContentPage.Content>
MoreTilePage.xaml.cs
public partial class MoreTilePage : ContentPage
{
public MoreTilePage()
{
InitializeComponent();
var items = PixelApp.Platform.AppContext.Instance.moreViewModel?.Items;
Grid myGrid = new Grid();
myGrid.HorizontalOptions = LayoutOptions.FillAndExpand;
myGrid.Padding = new Thickness(10);
myGrid.RowDefinitions = new RowDefinitionCollection
{
new RowDefinition { Height = new GridLength(220) },
new RowDefinition { Height = new GridLength(220) },
new RowDefinition { Height = new GridLength(220) },
new RowDefinition { Height = new GridLength(220) },
new RowDefinition { Height = new GridLength(220) }
};
myGrid.ColumnDefinitions = new ColumnDefinitionCollection
{
new ColumnDefinition { Width = GridLength.Star },
new ColumnDefinition { Width = GridLength.Star }
};
int iColumn = 0;
int iRow = 0;
int iItem = 1;
foreach (MoreModel model in items)
{
if (iItem > 2)
{
iItem = 1;
iRow++;
}
model.row = iRow;
model.column = iColumn;
var tile = new MoreTileView(model);
myGrid.Children.Add(tile);
iItem++;
if (iColumn == 0)
iColumn = 1;
else
iColumn = 0;
}
MoreTileViewHolder.Children.Add(myGrid);
}
}
MoreTileView.xaml
<ContentView.Content>
<Frame Grid.Column="{Binding column}" Grid.Row="{Binding row}" Margin="0" HasShadow="True" BackgroundColor="LightGray" IsClippedToBounds="True" CornerRadius="10" Padding="0">
<Grid>
<ffimageloading:CachedImage Source="{Binding image}" Aspect="AspectFill" />
<ffimageloading:CachedImage Source="https://www.fisher-price.com/resources/animations/Imaginext/meetcharacters/images/kids_bkg-grey-grad.png" Aspect="Fill" />
<BoxView HeightRequest="3" BackgroundColor="HotPink" VerticalOptions="End" HorizontalOptions="Start" WidthRequest="70" Margin="10,10,10,60" />
<Label Text="{Binding headline}" TextColor="White" VerticalOptions="End" Margin="10,10,10,10" />
</Grid>
</Frame>
</ContentView.Content>
MoreModel.cs
public class MoreModel
{
public int id { get; set; }
public int appId { get; set; }
public int sort { get; set; }
public string headline { get; set; }
public string description { get; set; }
public string image { get; set; }
public string link { get; set; }
public int column { get; set; }
public int row { get; set; }
}
【问题讨论】:
-
我将网格背景颜色设置为红色,但仍然什么都看不到。 Xamarin 很烂
标签: c# xamarin xamarin.forms grid