我想将自定义类型的ObservableCollection绑定到TreeView。Binding ObservableCollection <MyClass> to TreeView
定制ErrorDetails类看起来是这样的:
class ErrorDetail
{
public string Error;
public List<String> FilesList;
}
在我的ViewModel,我用下面的LINQ查询填充的集合。 errorCollection是DataContext的一部分。
var results = (from p in Transactions
group p.FileName by p.Error.ToString()
into g
select new ErrorDetail() {Error = g.Key, FilesList = g.ToList()}).ToList();
errorCollection = new ObservableCollection<ErrorDetail>(results);
在TreeView上,我想显示每个错误及其关联文件作为其子节点。
下面是我的XAML
<Grid Name="ErrorView" Margin="10">
<TreeView ItemsSource="{Binding Path=ErrorModel.ErrorDetails}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=FilesList}">
<TextBlock Foreground="Red" Text="{Binding Path=Error}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FilesList}" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
我怀疑在第二TextBlock的绑定。无论如何,我尝试了多种组合,但没有显示出来。
请指导。
编辑:添加更多的最终结果,集合填充正确,但没有显示在TreeView上。
什么是错误?子节点没有显示? –
@SzabolcsDézsi不只是孩子的节点。没有任何节点出现。树视图是空的。 –
请按照以下建议来调试您的wpf绑定:http://stackoverflow.com/questions/337023/how-to-detect-broken-wpf-data-binding – Taterhead