2016-03-03 3 views
0

Я пытаюсь привязать 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> 

Сомневаюсь о Binding во 2-м TextBlock. Несмотря ни на что, я попробовал несколько комбинаций, но ничего не появилось.

Просим руководствоваться.

Редактировать: добавление большего количества в конец результата, коллекция заполняется правильно, но ничего не отображается в TreeView.

+0

Какая ошибка? Не показаны дочерние узлы? –

+0

@ SzabolcsDézsi Не только дочерние узлы. Ни один из узлов не отображается. Дерево древовидное пусто. –

+0

Следуйте этим рекомендациям, чтобы отлаживать привязки wpf: http://stackoverflow.com/questions/337023/how-to-detect-broken-wpf-data-binding – Taterhead

ответ

0
<TreeView ItemsSource="{Binding ErrorList}"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Path=FilesList}"> 
       <TextBlock Foreground="Red" 
          Text="{Binding Path=Error}" /> 
       <HierarchicalDataTemplate.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding}" /> 
        </DataTemplate> 
       </HierarchicalDataTemplate.ItemTemplate> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 

enter image description here

0

Хотя ответ zhaojingbo было место, я понял одну основную вещь, которую я не хватало в том, чтобы иметь свойства в классе ErrorDetail, а не только в каких областях.

Не понимал, что WPF настолько строг в отношении требуемых свойств.

Смежные вопросы