【发布时间】:2011-12-09 15:38:42
【问题描述】:
我有一个类 ComponentItem,我在下面简化了(伪代码)
public class ComponentItem : NotificationObject
{
private ObservableCollection<FileItem> _files;
public ObservableCollection<FileItem> Files
private ObservableCollection<SparepartItem> spareparts;
public ObservableCollection<SparepartItem> SpareParts
public string ObjectId
}
如果我为这个类创建设计数据,我可以这样做
<m:ComponentItem xmlns:m="clr-namespace:AITReportEditor.Infrastructure.Models;assembly=AITReportEditor.Infrastructure" ObjectId="AAAA-BBBB-CCCC-DDDDD">
<m:ComponentItem.PartData>
<m:PartDataItem Name="Component name" Status="1" Note="This is a note description" />
</m:ComponentItem.PartData>
<m:ComponentItem.Files>
<m:FileItem FileName="Image1.jpg" Note="This is a note1" ObjectId="AAAA-BBBB-CCCC-DDDDD" ></m:FileItem>
<m:FileItem FileName="Image1.jpg" Note="This is a note2" ObjectId="AAAA-BBBB-CCCC-DDDDE" ></m:FileItem>
</m:ComponentItem.Files>
<m:ComponentItem.SpareParts>
<m:SparepartItem ObjectId="AAAA-BBBB-CCCC-DDDDD" Note="This is a note1" SpId="1" Amount="22" />
<m:SparepartItem ObjectId="AAAA-BBBB-CCCC-DDDDE" Note="This is a note2" SpId="1" Amount="23" />
</m:ComponentItem.SpareParts>
</m:ComponentItem>
我可以将其用作用户控件的设计数据。用户控件包含自定义子用户控件,并且在我设计父控件时设计数据不会显示在子控件中,因此我想将设计数据单独添加到子控件中。我的问题是我似乎无法为像
这样的集合定义 xaml私有 ObservableCollection _files;
似乎没有办法声明类似,伪 xaml 代码
<List<FileItem> ............
<m:FileItem ...... />
我通过声明一个不必要的类 FilesItem 解决了这个问题
public class FilesItem : ObservableCollection<FileItem>
{
public FilesItem()
{
}
}
}
和 xaml 文件。
<m:FilesItem xmlns:m="clr-namespace:AITReportEditor.Infrastructure.Models;assembly=AITReportEditor.Infrastructure">
<m:FileItem FileName="Image1.jpg" Note="This is a note1" ObjectId="AAAA-BBBB-CCCC-DDDDD" ></m:FileItem>
<m:FileItem FileName="Image2.jpg" Note="This is a note2" ObjectId="AAAA-BBBB-CCCC-DDDDE" ></m:FileItem>
<m:FileItem FileName="Image2.jpg" Note="This is a note2" ObjectId="AAAA-BBBB-CCCC-DDDDF" ></m:FileItem>
</m:FilesItem>
任何人都知道这是否是这样做的方法,或者我可以以某种方式摆脱不必要的课程。
【问题讨论】: