Silverlight 3.0, TreeView from Toolkit October 2009.
Задача: Если снять выделение со всех элементов TreeView, то ранее выделенный элемент опять станет выделенным, если окно Silverlight тут же потеряет фокус а потом получит опять.
Решение: Недостаточно просто снять выделение с элемента TreeView, нужно так же снять с него фокус.
Вот код, который обходит эту проблему.
public static void UnseslectAllTreeViewItems(TreeView treeView)
{
//treeView.SetSelectedContainer(null);
var selectedContainer = treeView.GetSelectedContainer();
if (selectedContainer != null)
{
selectedContainer.IsSelected = false;
}
{
//treeView.SetSelectedContainer(null);
var selectedContainer = treeView.GetSelectedContainer();
if (selectedContainer != null)
{
selectedContainer.IsSelected = false;
}
// Bug resolving
var focusedElement = FocusManager.GetFocusedElement();
if (focusedElement != null
&& focusedElement == selectedContainer)
{
treeView.Focus();
}
}