WPF TreeView четкий выбор

Имя объекта предназначено исключительно для потребления человеком (или для любых инструментов для потребления человеком, таких как компилятор MIB или IDE). Протокол SNMP имеет дело только с OID.

Таким образом, наихудшим было бы отказаться от добавления новой записи, поскольку с тех пор вы сломаете все приложения, которые используют старый OID.

Ваше решение - ЗАМЕНИТЬ OldName на NewName, а не добавлять его в ПОСЛЕДОВАТЕЛЬНОСТЬ.

Если вы хотите быть в безопасности, вы можете добавить предложение OBJECT IDENTIFIER, которое делает эквивалентность второго имени для этого OID, в вашем примере после определения NewName, например.

NewName OBJECT-TYPE
...
::= { tableentry N } 
-- N is a decimal number

Вы можете добавить

OldName  OBJECT IDENTIFIER ::= { tableentry N }
9
задан Sergiu Dumitriu 5 January 2013 в 04:44
поделиться

5 ответов

Не уверенный, что Вы подразумеваете под TreeNodes.

Обычно у Вас было бы соответствие IsSelected свойство на Вашей модели представления, с которой связывает Ваше представление:

<TreeView>
    <TreeView.ItemContainerStyle>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

Поэтому Вы просто циклично выполнились бы через элементы данных в Вашей модели представления и установили бы IsSelected = false там.

Однако это кажется, что у Вас нет такого свойства. При этом необходимо получить соответствие TreeViewItem для каждого элемента данных. Посмотрите TreeView.ItemContainerGenerator свойство для получения информации о том, как сделать это. Что-то как:

var treeViewItem = _treeView.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem;
treeViewItem.IsSelected = false;
8
ответ дан 4 December 2019 в 08:02
поделиться

Найдите выбранный пункт и установите значение:

private void Button_Click(object sender, RoutedEventArgs e)
{
  TreeViewItem tvi = treeviewExample.SelectedItem as TreeViewItem;
  if (tvi != null)
  {
    tvi.IsSelected = false;
  }
}
3
ответ дан 4 December 2019 в 08:02
поделиться

Я столкнулся с теми же проблемами и написал следующий код, который будет работать с любым древовидным списком, с вызовом только одной строки для первой функции.

class TomWrightsUtils
{
    public static void ClearTreeViewSelection(TreeView tv)
    {
        if (tv != null)
            ClearTreeViewItemsControlSelection(tv.Items, tv.ItemContainerGenerator);
    }
    private static void ClearTreeViewItemsControlSelection(ItemCollection ic, ItemContainerGenerator icg)
    {
        if ((ic != null) && (icg != null))
            for (int i = 0; i < ic.Count; i++)
            {
                TreeViewItem tvi = icg.ContainerFromIndex(i) as TreeViewItem;
                if (tvi != null)
                {
                    ClearTreeViewItemsControlSelection(tvi.Items, tvi.ItemContainerGenerator);
                    tvi.IsSelected = false;
                }
            }
    }
}
11
ответ дан 4 December 2019 в 08:02
поделиться

Кажется, пока это работает, но я просто вставил его около 5 минут назад, так что используйте на свой страх и риск. В основном я хотел снять выделение, когда пользователь щелкает элемент управления в виде дерева, но не элемент дерева.

 void DestinationTree_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     TreeView tree = sender as TreeView;
     DestinationClientViewModel selectedItem = tree.SelectedItem as DestinationClientViewModel;

     if (selectedItem != null)
     {
        int selectedItemIndex = this.DestinationTree.Items.IndexOf(selectedItem);

        if (selectedItemIndex > -1)
        {
            TreeViewItem tvi = this.DestinationTree.ItemContainerGenerator.ContainerFromIndex(selectedItemIndex) as TreeViewItem;
            if (tvi != null)
                tvi.IsSelected = false;
        }
     }
 }
0
ответ дан 4 December 2019 в 08:02
поделиться

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

youTreeview.ClearSelection();

using System.Windows.Forms;
using System.Windows.Controls;

namespace YourAppNamespace
{
    public static void ClearSelection(this TreeView input)
    {
    // this should be some container that you put in
    // possibly the actual treeviewitem, not sure on that though
    var selected = input.SelectedItem;
    if (selected == null)
        return;

    // in my case this works perfectly
    var tvi = input.ItemContainerGenerator.ContainerFromItem(selected) as TreeViewItem;
    var tvi = input.ItemContainerGenerator.ContainerFromItem(selected) as TreeViewItem;
    if (tvi == null)
    {
        // it must be a child, heres a hack fix
        // my nodes are inherited from TreeViewItemViewModel by Josh Smith
        var child = selected as WPF.Controls.TreeViewItemViewModel;
        if (child == null)
            return;
        child.IsSelected = false;

    }
    else
        tvi.IsSelected = false;
     }


}
2
ответ дан 4 December 2019 в 08:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: