Silverlight: “Тонкий” баг в TreeView при снятии выделения со всех элементов.

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
    }

    // Bug resolving

    var focusedElement = FocusManager.GetFocusedElement();

    if (focusedElement != null

        && focusedElement == selectedContainer)
    {
        treeView.Focus();
    }
}

About Ilya Tretyakov, it3xl

Just Google it3xl
This entry was posted in Bugs, Silverlight and tagged , . Bookmark the permalink.

Leave a comment