private static void GetTreeItemContainerAndValue(ItemsControl tree, out TreeViewItem itemContainer,
out string itemValue)
{
if (tree == null) throw new ArgumentNullException("tree");
foreach (object i in tree.Items)
{
var thisItem = tree.ItemContainerGenerator.ContainerFromItem(i) as TreeViewItem;
if (null == thisItem) break;
if (!thisItem.IsSelected) continue;
itemContainer = thisItem;
itemValue = i as string;
return;
}
itemContainer = null;
itemValue = string.Empty;
}