我正在使用 WPF 中的树视图
我有两个类用于填充树视图的两个级别。
第一个问题是我可以用一个查询来做到这一点,还是比我在下面实现的更好。
主要问题是我想包含h.ItemId
和其他列,ViewDocItems
并且仍然在树视图中实现层次结构。
现在Title
fromDocHistory
类是树的根级别。
而BaseNumber
fromBaseHistory
是第二层。
public class DocHistory
{
private ObservableCollection<BaseHistory> mBaseHis = new ObservableCollection<BaseHistory>();
public Guid Id { get; set; }
public Guid ClassId { get; set; }
public string Title { get; set; }
public ObservableCollection<BaseHistory> BaseHis { get { return mBaseline; } }
}
public class BaseHistory
{
public Guid BaseId { get; set; }
public string BaseName { get; set; }
public int BaseNumber { get; set; }
public bool BaseFinal { get; set; }
}
//this guid is only for testing
mGuid = new Guid("0497F3DA-AE3E-40C7-AF91-9B26EEE2A437");
var query = (from d in mContext.Docs
orderby d.Title ascending
join b in mContext.Base on d.DocId equals b.DocId
join h in mContext.ViewDocItems on b.BaseId equals h.BaseId
where h.ItemId == mGuid
select d).Distinct();
List<Database.Doc> DocList = query.ToList();
foreach (Database.Doc result in DocList)
{
DocHistory newHistory = new DocuHistory() { Id = result.DocId, Title = result.Title, ClassId = result.ClassId };
mHistory.Add(newHistory);
var documents = from d in result.Base
orderby d.LineNumber
select new BaseHistory()
{
BaseId = d.BaseId,
Name = d.Title,
BaseFinal = d.Final.Value,
LineNumber = d.LineNumber.Value
};
documents.ToList().ForEach(d => newHistory.BaseHis.Add(d));
}
这是我绑定到的属性
private ObservableCollection<DocHistory> mHistory = new ObservableCollection<DocHistory>();
public ObservableCollection<DocHistory> DocsHistory
{
get
{
return mHistory;
}
}
我正在使用ItemsSource="{Binding Path=DocsHistory}"
树视图
并且Hierarchial DataTemplate
绑定到BaseHis