2013-06-09 3 views
1

Я работаю над WPF TreeView, и я хочу скрыть родителя дерева. В этом случае родитель:Как скрыть корень TreeView?

var parent = new TreeViewModel() { Value = "Main Root" }; 

Я заселена свою структуру дерева, используя этот метод:

public ObservableCollection<MessageElementViewModel> GetAllTreeNodes() 
{ 
    List<TreeViewModel> reqNodes = GetRequestTreeNodesFromModel(); // req 
    //List<TreeViewModel> respNodes = GetRequestTreeNodesFromModel(); // res 

    var request = new TreeViewModel(); 
    var response = new TreeViewModel(); 
    var parent = new TreeViewModel() { Value = "Main Root" }; 

    for (int i = 0; i < wsMethodNameList.Count; i++) 
    { 
     var child = new TreeViewModel { Value = wsMethodNameList[i] }; 
     parent.Children.Add(child); 
     var requestChild = new TreeViewModel { Value = requestXmlList[i] }; 

     requestChild.Children = reqNodes; 
     child.Children.Add(requestChild); 

     var responseChild = new TreeViewModel { Value = responseXmlList[i] }; 
     responseChild.Children = reqNodes; // change to response nodes 
     child.Children.Add(responseChild); 
    } 
    return new ObservableCollection<TreeViewModel> { parent}; 

Xaml

<TreeView Margin="644,137,6,6" Grid.RowSpan="2" ItemsSource="{Binding Path=MessageElements, Mode=TwoWay}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:MessageElementViewModel}" ItemsSource="{Binding Path= Children }"> 
       <CheckBox IsChecked="{Binding Name}" Content="{Binding Name}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 

ViewModel

public ObservableCollection<MessageElementViewModel> MessageElements 
{ 
    get { return messageElement; } 
    set 
    { 
     if (messageElement == value) 
      return; 
     messageElement = value; 
     NotifyPropertyChanged("MessageElements"); 
    } 
} 

Загрузка данных

public void LoadData() 
{ 
    this.MessageElements = treeVModel.GetAllTreeNodes(); 
} 

На мой xaml Я хочу скрыть parent = new TreeViewModel() { Value = "Main Root" };.

Как я могу это достичь? Я попытался дать ему пустую строку, но она все еще показывает значок расширения.

ответ

2

Просто не связывайтесь с самим корнем, кроме его детей.

+1

'ItemsSource =" {Binding MessageElements [0] .Children} "' –

+1

@AydaSayed: '1'? Если ваше дерево имеет один корень, то '1' находится за пределами допустимого диапазона. –

+0

мое дерево имеет один корень (родительский) и еще два подкорня (запрос и ответ) –

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