C# 使用ObservableCollection实现模态

C# 使用ObservableCollection实现模态,c#,xamarin,freshmvvm,C#,Xamarin,Freshmvvm,我正在使用freshmvvm 模态 public class Expense : INotifyPropertyChanged { public int Id { get; set; } public string Name { get; set; } public ObservableCollection<ImageSource> Images { get; set; }//here public event PropertyChangedEvent

我正在使用freshmvvm

模态

public class Expense : INotifyPropertyChanged
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<ImageSource> Images { get; set; }//here
    public event PropertyChangedEventHandler PropertyChanged;
}
公共类费用:INotifyPropertyChanged
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共可观察收集图像{get;set;}//此处
公共事件属性更改事件处理程序属性更改;
}
我希望为图像提供如下属性(名称、类型、源)

公共可见采集图像{
公共字符串名称{get;set;}
公共字符串类型{get;set;}
公共ImageSource源{get;set;}
}

我想我理解你的问题。您希望向图像添加一些“元数据”。您可以围绕ImageSource构建一个包装类,或者从ImageSource派生一个类(我将同时显示这两个类):

包装类

public class ImageWrapper
{
   public string name { get; set; }
   public string type { get; set; }
   public ImageSource source { get; set; }
}

public class Expense : INotifyPropertyChanged
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<ImageWrapper> Images { get; set; }//here
    public event PropertyChangedEventHandler PropertyChanged;
}
public class MyImageSource : ImageSource
{
   public string name { get; set; }
   public string type { get; set; }
}

public class Expense : INotifyPropertyChanged
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<MyImageSource> Images { get; set; }//here
    public event PropertyChangedEventHandler PropertyChanged;
}
公共类ImageWrapper
{
公共字符串名称{get;set;}
公共字符串类型{get;set;}
公共ImageSource源{get;set;}
}
公共类费用:INotifyPropertyChanged
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共可观察收集图像{get;set;}//此处
公共事件属性更改事件处理程序属性更改;
}
派生类

public class ImageWrapper
{
   public string name { get; set; }
   public string type { get; set; }
   public ImageSource source { get; set; }
}

public class Expense : INotifyPropertyChanged
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<ImageWrapper> Images { get; set; }//here
    public event PropertyChangedEventHandler PropertyChanged;
}
public class MyImageSource : ImageSource
{
   public string name { get; set; }
   public string type { get; set; }
}

public class Expense : INotifyPropertyChanged
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<MyImageSource> Images { get; set; }//here
    public event PropertyChangedEventHandler PropertyChanged;
}
公共类MyImageSource:ImageSource
{
公共字符串名称{get;set;}
公共字符串类型{get;set;}
}
公共类费用:INotifyPropertyChanged
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共可观察收集图像{get;set;}//此处
公共事件属性更改事件处理程序属性更改;
}

在第二个示例中,您不需要属性来保存ImageSource,因为对象itsel是具有附加属性的ImageSource。如果这对你的申请没有负面影响,我会同意。如果需要进行大量重构,那么第一个is示例也可以。

问题是什么?第二个代码示例中的语法类型是什么?