#wpf #command
Вопрос:
Я работаю над приложением с несколькими вкладками (например, Текстовый редактор с несколькими вкладками), в котором каждый элемент tabitem имеет свой собственный контент. И в контекстном меню элемента табуляции у них есть элемент меню с командой, скажем, команда selectAll.
После запуска приложения пункт меню всегда отключен, выполнение команд не выполняется.
Итак, как я могу заставить работать мои привязки команд ?
код ::
В Контекстном Меню В Редакторе Текста>
<MenuItem Command="local:TextEditor.SelectAllCommand" Header="Select All" />
В Привязках Команд В Редакторе Текста>
<UserControl.CommandBindings>
<CommandBinding Command="local:TextEditor.SelectAllCommand"
Executed="SelectAll_Executed" CanExecute="SelectAll_CanExecute" />
</UserControl.CommandBindings>
Элементы табитации с редактором текста создаются во время выполнения
Комментарии:
1. Первым замечательным шагом может быть совместное использование кода с нами
2. @Snowbear JIM-компилятор Было бы ужасно, если бы здесь был пост-код.
Ответ №1:
Это происходит, так как контекстные окна являются отдельными окнами со своим собственным деревом визуализации и деревом логики.
Используйте вот так
<MenuItem Header="Cut" Command="Cut" CommandTarget="
{Binding Path=PlacementTarget,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ContextMenu}}}"/>
Для получения дополнительной информации перейдите по ссылке ниже
Комментарии:
1. Спасибо за эту ссылку и вашу помощь
2. Это отлично работает. Но редактор XAML отображает ложную «Ссылку на объект, не заданную для экземпляра объекта». Он отлично работает после компиляции и запуска, но было бы неплохо, чтобы ошибка не отображалась в редакторе. Есть какой-нибудь способ это исправить?
Ответ №2:
смотрите ответ biju, ваш DataContext для вашего контекстного меню не тот, который вы ожидаете.
и если у вас возникнут какие-либо проблемы с привязкой в будущем, взгляните на Snoop. это простой в использовании инструмент для проверки ваших привязок во время выполнения.
я всегда проверяю 2 вещи:
- является ли мой DataContext тем, который я ожидаю?!
- является ли мой Путь Привязки тем, который я хочу?!