Контекстное меню WPF Click событие работает в одном месте, а не в другом

Вы можете преобразовать объект sqlalchemy в такой словарь и вернуть его как json / dictionary.

Вспомогательные функции:

import json
from collections import OrderedDict


def asdict(self):
    result = OrderedDict()
    for key in self.__mapper__.c.keys():
        if getattr(self, key) is not None:
            result[key] = str(getattr(self, key))
        else:
            result[key] = getattr(self, key)
    return result


def to_array(all_vendors):
    v = [ ven.asdict() for ven in all_vendors ]
    return json.dumps(v) 

Функция драйвера:

def all_products():
    all_products = Products.query.all()
    return to_array(all_products)
1
задан ajb 13 July 2018 в 05:16
поделиться

1 ответ

Не используйте события в DataTemplate. Они не будут работать.

Переместите второе контекстное меню из ресурсов DataTemplate в ресурсы PageListBox следующим образом:

<ListBox Name="PageListBox">
    <ListBox.Resources>
        <!-- ... other resources... -->

        <ContextMenu x:Key="FrameContextMenu">
            <MenuItem Header="_Add Frame" Name="ContextAddFrame"/>
            <MenuItem Header="_Edit Frame" Name="ContextEditFrame"/>
            <MenuItem Header="_Delete Selected Frame(s)" Click="ContextDeleteFrames_Click"/>
            <MenuItem Header="Show _Preview" Name="ContextShowPreview" Click="ContextShowPreview_Click"/>
        </ContextMenu>
    </ListBox.Resources>
</ListBox>

... или используйте команды вместо событий:

<MenuItem Header="_Delete Selected Frame(s)" Command="{Binding DeleteFrameCommand}"/>

, где DeleteFrameCommand является свойством типа ICommand или RoutedCommand.

Если вы хотите использовать команды, что контекстное меню не находится в визуальном дереве его PlacementTarget, поэтому вам нужно будет использовать некоторые помощники, чтобы заставить привязки работать (связующий прокси или свойство PlacementTarget.Tag и т. д.).

0
ответ дан dymanoid 17 August 2018 в 13:41
поделиться
  • 1
    Благодарю. Как правило, все вещи типа ресурса должны содержаться в ресурсах верхнего уровня, а не в элементе шаблона данных? Или это конкретное ограничение вещей, которые создают события? – ajb 20 July 2018 в 22:14
Другие вопросы по тегам:

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