2016-07-07 3 views
1

Я использую TreeView от WinrtXamlToolkit. Поведение этого элемента по умолчанию заключается в том, чтобы развернуть вложенные элементы при двойном щелчке заголовка. Код, отвечающий за это, находится здесь (TreeViewItem.cs line 1205).WinrtXamlToolkit TreeView развернуть с одним вместо двойного щелчка

private void OnHeaderMouseLeftButtonDown(object sender, PointerRoutedEventArgs e) 
     { 
      if (Interaction.AllowMouseLeftButtonDown(e)) 
      { 
       // If the event hasn't already been handled and this item is 
       // focusable, then focus (and possibly expand if it was double 
       // clicked) 
       if (!e.Handled && IsEnabled) 
       { 
        if (Focus(FocusState.Programmatic)) 
        { 
         e.Handled = true; 
        } 

        // Expand the item when double clicked 
        if (Interaction.ClickCount % 2 == 0) 
        { 
         bool opened = !IsExpanded; 
         UserInitiatedExpansion |= opened; 
         IsExpanded = opened; 

         e.Handled = true; 
        } 
       } 

       Interaction.OnMouseLeftButtonDownBase(); 
       OnPointerPressed(e); 
      } 
     } 

Есть ли способ, чтобы изменить это поведение, чтобы расширить пункты одним щелчком мыши или нажмите без фактического копирования контроля, и все это связано классы моего проекта?

Кажется, что это слишком много, чтобы изменить несколько строк кода.

ответ

1

Я попытался сделать drag'n'drop с помощью этого TreeView и был в аналогичной ситуации. Мой первый шаг состоял в том, чтобы на самом деле скопировать все TreeView и связанные с ним классы и человека, есть много. Слишком много внутреннего события, и я в значительной степени отказался от вмешательства в него, когда куча других вещей перестала работать.

Таким образом, мое решение состояло в том, чтобы просто иметь конкретный элемент управления внутри ItemTemplate, который обрабатывал перетаскивание для меня. Для вас это будет Button, у которого Click вы обращаетесь. В обработчике событий вы перемещаете визуальное дерево на TreeViewItem и меняете IsExpanded.

+0

Это сообразительная идея. Я попробую. – Corcus