WPF обновляет пункты контекстного меню перед отображением меню - PullRequest
1 голос
/ 05 августа 2011

Я использую WPF с Caliburn и шаблоном MVVM и пытаюсь настроить динамическое контекстное меню.

В настоящее время у нас есть контекстное меню, элементы которого привязаны к коллекции BindableCollection в модели представления.

<UserControl.ContextMenu>
         <ContextMenu ItemsSource="{Binding AvailableActions}"
                      actions:Action.TargetWithoutContext="{Binding}"
                      ItemContainerStyleSelector="{StaticResource NamedActionStyleSelector}"/>
</UserControl.ContextMenu>
public BindableCollection<NamedAction> AvailableActions { get; set; }

Эта коллекция BindableCollection обновляется при определенных обстоятельствах во время выполнения программы методом (снова на модели представления):

private void UpdateAvailableActions()

Текущая система работает хорошо для большинства ситуаций, но есть несколько крайних случаев, которые предполагают, что мы были бы лучше подготовлены для динамической генерации списка после события щелчка правой кнопкой мыши.

Так что мой вопрос, может ли кто-нибудь помочь мне с наилучшим способом вызвать метод обновления (или написать альтернативный метод, который будет вызван), когда пользователь щелкнет правой кнопкой мыши. Буду очень признателен за любую помощь, как это сделать.

Спасибо

1 Ответ

1 голос
/ 05 августа 2011

Лично я большой поклонник использования OnPropertyChanged() из IPropertyNotifyChanged. Таким образом, вы можете создать команду, которая будет выполнена при щелчке правой кнопкой мыши и которая вызовет OnPropertyChanged(). Вам нужно будет немного изучить, как вы хотите реализовать события как команды, поскольку вы используете MVVM, отправную точку можно найти здесь или здесь . Кроме того, вы можете проявить творческий подход с помощью привязки CommandParameter и использовать ее в своей команде.

Надеюсь, это поможет!

...