Wpf 扩展树视图
我有一个Wpf 扩展树视图,wpf,treeview,Wpf,Treeview,我有一个TreeView控件和所有从xml填充的节点。树在第一级中有5个元素,每个元素在第二级中包含多个元素。我的requiremrnt是启动应用程序时应展开的第一个元素。我写过这样的方法: public void SelectAndExpand(ItemsControl ParentContainer) { TreeViewItem CurrentContainer = (TreeViewItem)ParentContainer.ItemContainerGenerat
TreeView
控件和所有从xml填充的节点。树在第一级中有5个元素,每个元素在第二级中包含多个元素。我的requiremrnt是启动应用程序时应展开的第一个元素。我写过这样的方法:
public void SelectAndExpand(ItemsControl ParentContainer)
{
TreeViewItem CurrentContainer = (TreeViewItem)ParentContainer.ItemContainerGenerator.ContainerFromIndex(0);
if (CurrentContainer == null)
{
return;
}
CurrentContainer.IsExpanded = true;
CurrentContainer.UpdateLayout();
TreeViewItem ChildItem = (TreeViewItem)CurrentContainer.ItemContainerGenerator.ContainerFromIndex(0);
if (ChildItem != null)
{
ChildItem.IsSelected = true;
CurrentContainer.UpdateLayout();
}
}
public Window1()
{
InitializeComponent();
SelectAndExpand(MyTree);
}
我这样称呼这个方法:
public void SelectAndExpand(ItemsControl ParentContainer)
{
TreeViewItem CurrentContainer = (TreeViewItem)ParentContainer.ItemContainerGenerator.ContainerFromIndex(0);
if (CurrentContainer == null)
{
return;
}
CurrentContainer.IsExpanded = true;
CurrentContainer.UpdateLayout();
TreeViewItem ChildItem = (TreeViewItem)CurrentContainer.ItemContainerGenerator.ContainerFromIndex(0);
if (ChildItem != null)
{
ChildItem.IsSelected = true;
CurrentContainer.UpdateLayout();
}
}
public Window1()
{
InitializeComponent();
SelectAndExpand(MyTree);
}
但这不起作用
有没有克服这个问题的建议
谢谢您可以定义
ItemContainerStyle
以便展开项目:
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="True"/>
</Style>
</TreeView.ItemContainerStyle>
...
</TreeView>
...
谢谢托马斯
我可以用其他方法克服这个问题
我将加载的事件设置为
Loaded="MyTree_Loaded"
我以
private void MyTree_Loaded(object sender, RoutedEventArgs e)
{
TreeViewItem CurrentContainer = (TreeViewItem)MyTree.ItemContainerGenerator.ContainerFromIndex(0);
if (CurrentContainer == null)
{
return;
}
CurrentContainer.IsExpanded = true;
CurrentContainer.UpdateLayout();
TreeViewItem ChildItem = (TreeViewItem)CurrentContainer.ItemContainerGenerator.ContainerFromIndex(0);
if (ChildItem != null)
{
ChildItem.IsSelected = true;
CurrentContainer.UpdateLayout();
}
}
谢谢另一种方法是遵循本文,将xml加载到ViewModel类中 您可以直接在codebehind中设置IsExpanded属性,而无需与TreeView交互