Here is some code that you can use to Expand All the nodes of a Treeview control in Silverlight.
public class TreeViewExtensions
{
public static void ExpandAll(this TreeView treeView)
{
for (Int32 i = 0; i < treeView.Items.Count; ++i)
{
TreeViewItem item = treeView.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
if (item != null)
{
bool ret = ExpandAll(item, treeView);
if (ret == true)
{
item.IsExpanded = true;
}
}
}
}
static bool ExpandAll(TreeViewItem item, TreeView treeView)
{
bool expandParent = false;
if (!item.IsExpanded)
{
item.IsExpanded = true;
item.Dispatcher.BeginInvoke(() => ExpandAll(item, treeView));
expandParent = true;
}
else
{
if (item.HasItems)
{
for (Int32 i = 0; i < item.Items.Count; ++i)
{
TreeViewItem childItem = item.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
if (childItem != null)
{
bool ret = ExpandAll(childItem, treeView);
if (ret == true && expandParent == false)
{
childItem.IsExpanded = true;
expandParent = true;
}
}
}
if (expandParent == false)
{
item.IsExpanded = false;
}
}
}
return expandParent;
}
}
public class TreeViewExtensions
{
public static void ExpandAll(this TreeView treeView)
{
for (Int32 i = 0; i < treeView.Items.Count; ++i)
{
TreeViewItem item = treeView.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
if (item != null)
{
bool ret = ExpandAll(item, treeView);
if (ret == true)
{
item.IsExpanded = true;
}
}
}
}
static bool ExpandAll(TreeViewItem item, TreeView treeView)
{
bool expandParent = false;
if (!item.IsExpanded)
{
item.IsExpanded = true;
item.Dispatcher.BeginInvoke(() => ExpandAll(item, treeView));
expandParent = true;
}
else
{
if (item.HasItems)
{
for (Int32 i = 0; i < item.Items.Count; ++i)
{
TreeViewItem childItem = item.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
if (childItem != null)
{
bool ret = ExpandAll(childItem, treeView);
if (ret == true && expandParent == false)
{
childItem.IsExpanded = true;
expandParent = true;
}
}
}
if (expandParent == false)
{
item.IsExpanded = false;
}
}
}
return expandParent;
}
}
0 comments:
Post a Comment