Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml Xamarin表单将ImageSource绑定到元素内部的元素_Xaml_Xamarin_Xamarin.forms_Xamarin.android_Xamarin.ios - Fatal编程技术网

Xaml Xamarin表单将ImageSource绑定到元素内部的元素

Xaml Xamarin表单将ImageSource绑定到元素内部的元素,xaml,xamarin,xamarin.forms,xamarin.android,xamarin.ios,Xaml,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,我有个问题。我有以下清单: Set AlbumsForList = new Set { Name = album.Name, Pictures = new SetPictures { Picture = new List<SetPicture>() }, Price = album.Price }; albumList.Add(AlbumsForList); 最后是我的课程: [XmlRoot(ElementName = "

我有个问题。我有以下清单:

Set AlbumsForList = new Set
{
    Name = album.Name,
    Pictures = new SetPictures
    {
        Picture = new List<SetPicture>()
    },
    Price = album.Price
};

albumList.Add(AlbumsForList);
最后是我的课程:

[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; }
}
[XmlRoot(ElementName=“picture”)]
公共类单张图片
{
[xmlement(ElementName=“id”)]
公共字符串Id{get;set;}
[xmlement(ElementName=“name”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“size”)]
公共大小{get;set;}
[XmlIgnore]
公共ImageSource ImageSource{get;set;}
}
[XmlRoot(ElementName=“pictures”)]
公共类单张图片
{
[xmlement(ElementName=“picture”)]
公共列表图片{get;set;}
}
[XmlRoot(ElementName=“picture”)]
公共类设置图片
{
[xmlement(ElementName=“id”)]
公共字符串Id{get;set;}
[xmlement(ElementName=“name”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“size”)]
公共字符串大小{get;set;}
[xmlement(ElementName=“price”)]
公共字符串Price{get;set;}
[xmlement(ElementName=“数量”)]
公共字符串数量{get;set;}
[xmlement(ElementName=“size”)]
公共大小{get;set;}
[XmlIgnore]
公共ImageSource ImageSource{get;set;}
}
[XmlRoot(ElementName=“pictures”)]
公共类设置图片
{
[xmlement(ElementName=“picture”)]
公共列表图片{get;set;}
}
[XmlRoot(ElementName=“set”)]
公共类集
{
[xmlement(ElementName=“name”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“price”)]
公共字符串Price{get;set;}
[xmlement(ElementName=“pictures”)]
公共设置图片图片{get;set;}
[XmlIgnore]
公共ImageSource DemoImage{get;set;}
}
[XmlRoot(ElementName=“sets”)]
公共类集合
{
[xmlement(ElementName=“set”)]
公共列表集{get;Set;}
}
[XmlRoot(ElementName=“size”)]
公营班级人数
{
[xmlement(ElementName=“id”)]
公共字符串Id{get;set;}
[xmlement(ElementName=“name”)]
公共字符串名称{get;set;}
[xmlement(ElementName=“price”)]
公共字符串Price{get;set;}
}
[XmlRoot(ElementName=“size”)]
公营班级人数
{
[xmlement(ElementName=“size”)]
公共列表大小{get;set;}
}
[XmlRoot(ElementName=“data”)]
公共类数据
{
[xmlement(ElementName=“sets”)]
公共集合集合{get;set;}
[xmlement(ElementName=“pictures”)]
公共单张图片{get;set;}
}

现在我们已经在listAlbums中了,所以我定义了
绑定图片
,但是在CachedImage中,我需要进入
图片
,以获取元素
图像源
,但是我如何才能做到这一点呢?

您的页面似乎在CollectionView中包含了可绑定的布局

实际上,您可以使用列表中的列表作为CollectionView的ItemsSource

暗藏
公共类VM\u计数器列表
{

public ObservableCollection

Stacklayout的父视图是什么?您可以在xmal和ViewModel中提供完整的代码。我在问题中添加了完整的XAML,我认为ViewModel与此问题无关。我需要知道如何从对象中的对象访问元素。在我的例子中:
albumList->Pictures->Picture->imageSource
…我已经知道如何获取图片,但是接下来呢?你可以检查我的答案。好的,但我认为这对我不起作用。我也共享了我的类。你能看一看,然后根据我的需要修改你的代码吗?你可以将属性
公共列表图片{get set;}
直接在
Set
中。定义这样更高级别的模型是不明智的。好吧,但是我如何使用该类中的XML标记设置它。因为我需要在列表中设置XML的数组名:
pictures
和元素名:
picture
。我该怎么做?因为现在我的图片列表是空的!你可以d检查我的答案,只需要更改类名是的,我理解,但是你所说的关于更改我的类集中的属性,XML解析没有成功,因为
列表图片
保持为空。这是因为我的XML有一个标记
,然后
,我需要这两个标记作为列表
[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; }
}
public class VM_CounterList
{
  

    public ObservableCollection<AlbumsForList> albumList { get; set; }


    public VM_CounterList()
    {
        albumList = new ObservableCollection<AlbumsForList>() {


             new AlbumsForList(){ 
             
                 Name="No.1",
                 DemoImage = "screen.png",
                 Pictures = new ObservableCollection<MyImage>{ new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" } },
             },

             new AlbumsForList(){

                 Name="No.1",
                 DemoImage = "screen.png",
                 Pictures = new ObservableCollection<MyImage>{ new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" } },
             },

             new AlbumsForList(){

                 Name="No.1",
                 DemoImage = "screen.png",
                 Pictures = new ObservableCollection<MyImage>{ new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" } },
             },

             new AlbumsForList(){

                 Name="No.1",
                 DemoImage = "screen.png",
                 Pictures = new ObservableCollection<MyImage>{ new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" },new MyImage() {ImageSource="screen.png" } },
             },

        };


        
    }

}

public class AlbumsForList : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public string Name { get; set; }

    public ObservableCollection<MyImage> Pictures { get; set; }

    private string demoImage;
    public string DemoImage
    {
        set
        {
            if (demoImage != value)
            {
                demoImage = value;
                NotifyPropertyChanged("DemoImage");
            }
        }
        get { return demoImage; }
    }
}
  

public class MyImage : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    

    private string imageSource;
    public string ImageSource
    {
        set
        {
            if (imageSource != value)
            {
                imageSource = value;
                NotifyPropertyChanged("ImageSource");
            }
        }
        get { return imageSource; }
    }
}
<DataTemplate>
    <Image  HeightRequest="40" WidthRequest="55" Aspect="AspectFill" Source="{Binding ImageSource}"/>
</DataTemplate>