WPF - нужна комбинация дерева + сетки с контекстным меню

1

Мое приложение реализовано GridView внутри TreeList.

Изображение 174551

К моему отчаянию я обнаружил, что GridView очень примитивен по сравнению с широко используемым DataGrid. Я рассматриваю эти два варианта:

(1) Как-то я заменю GridView на DataGrid (который поддерживает контекстное меню).

(2) Как-то я добавляю возможность контекстного меню к существующему GridView.

Какой из двух подходов (или другой?) Вы бы порекомендовали?

Исходный код очень ценится.

ТИА.

  • 1
    Это очень хороший вопрос, мне нужно реализовать нечто очень похожее.
  • 0
    HighCore: Вы говорите, что, добавив что-то под названием SharedSizeGroup TreeView может иметь контекстные меню?
Показать ещё 8 комментариев
Теги:
wpf
datagrid
wpf-controls

1 ответ

1
Лучший ответ

На основе связанного кода, вот решение:

1 - Добавьте ContextMenu в качестве ресурса:

<Window.Resources>
    <ContextMenu x:Key="ItemsContextMenu" x:Shared="False">
        <MenuItem>
            <MenuItem.Header>
                <TextBlock>
                    <Run>Context Menu Action for Item</Run>
                    <Run Text="{Binding Tag.Name}"/>
                </TextBlock>
            </MenuItem.Header>
        </MenuItem>
    </ContextMenu>

    <!-- other stuff here -->

</Window.Resources>

Рекомендуется установить x:Shared="False" чтобы предотвратить проблемы с привязкой, связанные с повторным использованием экземпляра ресурса.

2 - Определите ItemContainerStyle для вашего TreeList, который устанавливает ContextMenu для TreeListItem s:

<tree:TreeList ...>
    <!-- other stuff here -->

    <tree:TreeList.ItemContainerStyle>
        <Style TargetType="{x:Type tree:TreeListItem}">
            <Setter Property="ContextMenu" Value="{StaticResource ItemsContextMenu}"/>
         </Style>
    </tree:TreeList.ItemContainerStyle>
</tree:TreeList>

Обратите внимание, что я использую DataBinding в ContextMenu, что означает, что в нем есть правильный рабочий DataContext. Вы должны иметь возможность использовать в нем Commands и другие вещи.

  • 0
    HighCore качается! HighCore правила! : ^ D ps: не уходи далеко ... :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню