【发布时间】:2020-05-20 20:40:04
【问题描述】:
我有问题。我有以下列表:
Set AlbumsForList = new Set
{
Name = album.Name,
Pictures = new SetPictures
{
Picture = new List<SetPicture>()
},
Price = album.Price
};
albumList.Add(AlbumsForList);
SetPicture 有一个名为imageSource 的元素,我想将其绑定到图像。
这是 XAML:
<CollectionView ItemsSource="{Binding albumList}" SelectionMode="Single"
SelectionChanged="OnCollectionViewSelectionChanged">
<CollectionView.ItemsLayout>
<GridItemsLayout Orientation="Vertical" />
</CollectionView.ItemsLayout>
<CollectionView.ItemTemplate>
<DataTemplate>
<Grid HeightRequest="100" VerticalOptions="Center">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="40"/>
<RowDefinition Height="10"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="3"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="3"/>
</Grid.ColumnDefinitions>
<ff:CachedImage Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Aspect="AspectFill" Source="{Binding DemoImage}" />
<Label Grid.Row="0" Grid.Column="3" VerticalTextAlignment="Center" VerticalOptions="Center"
HorizontalOptions="StartAndExpand" Text="{Binding Name}" TextColor="Black" FontAttributes="Bold"
FontSize="18" />
<ScrollView Orientation="Horizontal" Grid.Row="1" Grid.Column="3" Grid.ColumnSpan="2">
<StackLayout BindableLayout.ItemsSource="{Binding Pictures}" Orientation="Horizontal">
<BindableLayout.ItemTemplate>
<DataTemplate>
<ff:CachedImage HeightRequest="40" WidthRequest="55" Aspect="AspectFill" Source="{Binding imageSource}"/>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
</ScrollView>
</Grid>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
最后是我的课程:
[XmlRoot(ElementName = "picture")]
public class SinglePicture
{
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "sizes")]
public Sizes Sizes { get; set; }
[XmlIgnore]
public ImageSource imageSource { get; set; }
}
[XmlRoot(ElementName = "pictures")]
public class SinglePictures
{
[XmlElement(ElementName = "picture")]
public List<SinglePicture> Picture { get; set; }
}
[XmlRoot(ElementName = "picture")]
public class SetPicture
{
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "size")]
public string Size { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlElement(ElementName = "quantity")]
public string Quantity { get; set; }
[XmlElement(ElementName = "sizes")]
public Sizes Sizes { get; set; }
[XmlIgnore]
public ImageSource imageSource { get; set; }
}
[XmlRoot(ElementName = "pictures")]
public class SetPictures
{
[XmlElement(ElementName = "picture")]
public List<SetPicture> Picture { get; set; }
}
[XmlRoot(ElementName = "set")]
public class Set
{
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
[XmlElement(ElementName = "pictures")]
public SetPictures Pictures { get; set; }
[XmlIgnore]
public ImageSource DemoImage { get; set; }
}
[XmlRoot(ElementName = "sets")]
public class Sets
{
[XmlElement(ElementName = "set")]
public List<Set> Set { get; set; }
}
[XmlRoot(ElementName = "size")]
public class Size
{
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "name")]
public string Name { get; set; }
[XmlElement(ElementName = "price")]
public string Price { get; set; }
}
[XmlRoot(ElementName = "sizes")]
public class Sizes
{
[XmlElement(ElementName = "size")]
public List<Size> Size { get; set; }
}
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "sets")]
public Sets Sets { get; set; }
[XmlElement(ElementName = "pictures")]
public SinglePictures Pictures { get; set; }
}
现在我们已经在 listAlbums 中了,所以我定义了 Binding Pictures,但是在 CachedImage 中我需要进入 Picture 以获取元素 imageSource,但我该怎么做呢?
【问题讨论】:
-
Stacklayout 的父视图是什么?您可以在 xmal 和 ViewModel 中提供完整的代码。
-
我将完整的 XAML 添加到问题中,但我认为 ViewModel 与此问题无关。我需要知道如何从对象中的对象访问元素。在我的情况下:
albumList -> Pictures -> Picture -> imageSource.... 我已经知道如何访问 Picture,但是接下来呢? -
你可以查看我的答案。
标签: xaml xamarin xamarin.forms xamarin.android xamarin.ios