2015-09-09 2 views
0

Я просто пытаюсь связать свое древовидное представление в xaml, но по какой-то причине список, кажется, не отображается, я прикрепил код. Любая помощь будет большой.WPF Bindings TreeView Проблема с представлением

Большое спасибо

class Item 
{ 
    public string Header { get; set; } 
    public List<string> TreeItems { get; set; } 
    public List<Item> SubItems { get; set; } 
} 

это вид модели

public StoreLibraryViewModel() 
    { 
     this.DisplayName = "hierarchy Library"; 
     TreeItems = new ObservableCollection<Item>(); 

     string[] data = new string[]{ 
      "Warwick","Birmingham", 
     }; 
     Item item = new Item() 
     { 
      Header = "Region", 
      TreeItems = new List<string>(data) 
     }; 

     TreeItems.Add(new Item() 
     { 
      Header = "Region 1", 
      SubItems = new List<Item>(new Item[] { item }), 
      TreeItems = new List<string>(data) 
     }); 
     TreeItems.Add(new Item() 
     { 
      Header = "Region 2", 
      SubItems = new List<Item>(new Item[] { item }), 
      TreeItems = new List<string>(data) 
     }); 

     TreeItems.Add(new Item() 
     { 
      Header = "Region 3", 
      SubItems = new List<Item>(new Item[] { item }), 
      TreeItems = new List<string>(data) 
     }); 
    } 
    ObservableCollection<Item> TreeItems { get; set; } 

это XAML

TreeView ItemsSource="{Binding TreeItems}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding SubItems}"> 
       <Expander Header="{Binding Header}"> 
        <ItemsControl Margin="25,0,0,0" ItemsSource="{Binding TreeItems}" /> 
       </Expander> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 

Все, что я, кажется, отображение является пустой вид дерева, любая помощь был бы весьма признателен.

Большое спасибо

+0

Где вы устанавливаете свой DataContext? – mkdavor

+0

Если вы не уверены, что происходит в вашем визуальном дереве, возможно, используйте некоторые инструменты отладки WPF: отладчик WPF от VS 2015 или отличное приложение под названием Snoop. –

+0

приветствует парней быстрого реагирования, как мне определить DataContext? – agneovotom

ответ

-1

Вы должны добавить:

DataContext = new StoreLibraryViewModel(); 

Тогда вам нужно сделать ObservableCollection {получить элементов дерева; задавать; } Общественного

public ObservableCollection<Item> TreeItems { get; set; } 

Вот результат

enter image description here

+0

Огромное спасибо, я заметил, что как только я сделал свою наблюдаемую коллекционную коллекцию, все работало, полностью пропустило это! был длинный день, спасибо за всю помощь – agneovotom

+0

Я добавил DataContext = "{Binding}" прямо в свое дерево, если это помогает – agneovotom

+0

Почему мой ответ downvoted? Я пробовал это в новом проекте WPF, он работает, и я также разместил скриншот ... Уайт так ошибается, что я получаю нисходящее движение? – mkdavor

1

Вы просто должны присвоить DataContext в коде XAML, как это:

<Window .... 
     xmlns:local="clr-namespace:myStoreLibraryViewModelNameSpace" 
     .... 
     /> 
    <Window.DataContext> 
     <local:StoreLibraryViewModel /> 
    </Window.DataContext> 
    .... 

где myStoreLibraryViewModelNameSpace является пространство имен, в котором МагазинLibraryViewModel находится

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