none
Скачок скрола при получении фокуса TreeView RRS feed

  • Вопрос

  • http://www.codeproject.com/KB/WPF/TreeViewWithCheckBoxes.aspx - можно взять вот этот пример.

    запускаем приложение, уменьшаем окно, так чтобы появился скролл по вертикале. Чекаем первый элемент в дереве, дальше скролим в самый низ.

    Жмем таб чтобы передать фокус кнопке. Далее пытаемся отчекнуть мышкой элемент Uzi и вот скачок к первому элементу, на котором был фокус изначально.

    Как убрать это скачок?

    10 ноября 2010 г. 10:57

Ответы

  • Это известная проблема, решение заключается в создании наследника TreeView.

    public class MyTreeView : TreeView
    {
      protected override DependencyObject GetContainerForItemOverride()
      {
        return new MyTreeViewItem();
      }
    
      protected override bool IsItemItsOwnContainerOverride(object item)
      {
        return (item is MyTreeViewItem);
      }
    }
    
    public class MyTreeViewItem : TreeViewItem
    {
      protected override void OnGotFocus(RoutedEventArgs e)
      {
        this.IsSelected = true;
        this.RaiseEvent(e);
      }
    
      protected override DependencyObject GetContainerForItemOverride()
      {
        return new MyTreeViewItem();
      }
    
      protected override bool IsItemItsOwnContainerOverride(object item)
      {
        return (item is MyTreeViewItem);
      }
    }
    
    
    (вопрос на англ форуме по этой проблеме )

    Потом xaml коде для проекта, который Вы привели в кач-ве примера: исправить <TreeView на  <local:MyTreeView


    Для связи [mail]
    • Помечено в качестве ответа Michael Cherkasov 11 ноября 2010 г. 16:17
    11 ноября 2010 г. 13:38