Я пытаюсь создать динамическое контекстное меню в моем приложении на основе Caliburn.Micro.Кто-нибудь может поделиться примером эффективного способа сделать это?Пока у меня есть очень минимальная модель для каждого элемента контекстного меню:
public class ContextMenuUiModel
{
public string Name { get; set; }
}
свойство в моей модели представления, которое представляет список этих моделей элементов меню:
BindableCollection<ContextMenuUiModel> m_ContextMenuItems = new BindableCollection<ContextMenuUiModel>
{
new ContextMenuUiModel { Name="Item 1"},
new ContextMenuUiModel { Name="Item 2"},
new ContextMenuUiModel { Name="Item 3"}
};
public BindableCollection<ContextMenuUiModel> ContextMenuItems
{
get {return m_ContextMenuItems;}
}
и, пункт меню, названный для свойства коллекции (основанный на создании меню во FreePIE, найденном через этот вопрос и ответ )
<TreeView x:Name="ConfigItemTree" VerticalAlignment="Top" ItemsSource="{Binding ConfigTreeRoot}" >
<TreeView.ContextMenu>
<ContextMenu >
<MenuItem x:Name="ContextMenuItems" DisplayMemberPath="Name" />
</ContextMenu>
</TreeView.ContextMenu>
Отчеты по ведению журнала Caliburn.Micro "Нет элемента для действия дляget_ContextMenuItems».Кроме того, хотя Caliburn отмечает другие именованные элементы, для которых не найдено ни одного свойства (например, «Соглашение о связывании не применено: элемент ConfigItemTree не соответствует свойству.»), Оно не делает аналогичного оператора для ContextMenuItems.Таким образом, кажется, что Caliburn просто не видит ContextMenu как элемент, с которым он может или должен иметь дело.
Может быть, проблема в том, что Caliburn не может видеть контекстное меню, потому что он на самом деле не существует до тех пор, покапроисходит щелчок (аналогично эта проблема со свернутыми элементами )?
В конечном счете, я хотел бы, чтобы содержимое контекстного меню основывалось на элементе дерева, который был нажат правой кнопкой мыши, возможно, включая подменюи / или отключенные предметы.Для начала я согласен на все, что смогу получить.