2015-04-17 6 views
0

тамTreeViewItem.HeaderTemplate и перемещение по дереву

Это мой код позади, это может показаться немного странной

class DataContext 
    { 
     ObservableCollection<TreeViewItem> itemsSource; 
     public ObservableCollection<TreeViewItem> ItemsSource 
     { 
      get { return this.itemsSource; } 
      set { this.itemsSource = value; } 
     } 
    } 

     ObservableCollection<TreeViewItem> items = new ObservableCollection<TreeViewItem>(); 

     items.Add(new TreeViewItem()); 
     DataContext dcs = new DataContext(); 
     dcs.ItemsSource = new ObservableCollection<TreeViewItem>(); 

     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 
     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 
     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 
     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 
     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 
     dcs.ItemsSource.Add(new TreeViewItem()); 
     dcs.ItemsSource[dcs.ItemsSource.Count - 1] = null; 


     items[items.Count - 1].DataContext = dcs; 

     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 
     items.Add(new TreeViewItem()); 
     items[items.Count - 1].DataContext = null; 



     DataContext dc = new DataContext(); 
     dc.ItemsSource = items; 

     MyTreeView.DataContext = dc; 

У меня есть этот код в моем XAML

<TreeView x:Name="MyTreeView" Margin="0" ItemsSource="{Binding ItemsSource}"> 
     <TreeView.Resources> 
      <Style TargetType="TreeViewItem"> 
       <Setter Property="HeaderTemplate"> 
        <Setter.Value> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal"> 
           <CheckBox IsChecked="True" Focusable="False"/> 
           <TextBlock Text="Text"/> 
          </StackPanel> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
       <Setter Property="ItemsSource" Value="{Binding ItemsSource}"/> 
       <Setter Property="IsExpanded" Value="True"/> 
      </Style> 
     </TreeView.Resources> 
    </TreeView> 

есть проблема с subnodes TreeViewItem, я не могу использовать & стрелки вниз, чтобы перемещаться между ними. Пожалуйста, сообщите мне, что мне делать. Заранее спасибо.

+0

Добро пожаловать в SO. Вы должны опубликовать минимальный, но полностью функциональный образец кода вашего «TreeView», с элементами и т. Д. Что-то, что раскрывает проблему, и может быть вставлено в инструмент вроде kaxaml. –

+0

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

+0

ok, я исправил свой пост – random

ответ

0

Чтобы решить вашу проблему, TreeViewItems в вашем коде следует добавить непосредственно к свойству Items. Нечто подобное:

TreeViewItem treeViewItem = new TreeViewItem(); 
treeViewItem.Items.Add(new TreeViewItem()); 
treeViewItem.Items.Add(new TreeViewItem()); 
treeViewItem.Items.Add(new TreeViewItem()); 

MyTreeView.Items.Add(new TreeViewItem()); 
MyTreeView.Items.Add(treeViewItem); 
MyTreeView.Items.Add(new TreeViewItem()); 

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

+0

Спасибо, я удалил привязку в xaml и назначил 'TreeViewItem.ItemsSource = ds.ItemsSource' в коде, и он решил проблему. Я не думаю, что это возможно для меня, чтобы определить причину такого странного поведения, потому что оно привязано к внутренней работе wpf – random

+0

. Я рад, что вы нашли решение –

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