WPF: Binding a ContextMenu to an MVVM Command

Краткий ответ: вы не можете. Решение здесь заключается в том, чтобы сохранить файл где-нибудь и сохранить путь к файлу в сеансе, затем прочитать путь назад из сеанса и перечитать файл.

Кроме того, с одной стороны, делая так много вещей, возможно, не лучший дизайн, но YMMV ...

25
задан Heinzi 10 May 2012 в 16:27
поделиться

2 ответа

См. эту статью от Джастина Тейлора для обходного пути.

Обновление
К сожалению, упомянутый блог больше не доступен. Я попытался объяснить процесс в другом SO-ответе. Его можно найти здесь здесь .

6
ответ дан 28 November 2019 в 17:56
поделиться

Если (как и я) у вас отвращение к уродливым сложным выражениям связывания, вот простое решение этой проблемы с выделенным кодом. Этот подход все еще позволяет вам сохранять чистые объявления команд в вашем XAML.

XAML:

<ContextMenu ContextMenuOpening="ContextMenu_ContextMenuOpening">
    <MenuItem Command="Save"/>
    <Separator></Separator>
    <MenuItem Command="Close"/>
    ...

Код позади:

private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    foreach (var item in (sender as ContextMenu).Items)
    {
        if(item is MenuItem)
        {
           //set the command target to whatever you like here
           (item as MenuItem).CommandTarget = this;
        } 
    }
}
2
ответ дан 28 November 2019 в 17:56
поделиться
Другие вопросы по тегам:

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