• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Работа с коммандами

  • Автор темы iceheart
  • Дата начала
I

iceheart

Пытаюсь использовать команды для форматирования текста. Не получается.
Во-первых, в документации написано, что мне нужно просто установить свойство (или событие?) Command моего объекта-отправителя на нужную мне команду, например toolbar1.button1.Command = EditingCommands.ToggleBold. Но этого свойства (события?) у нужного мне элемента управления (а именно, кнопки на ToolStrip) нет. Остаётся вызвать команду вручную, то есть (я думаю) EditingCommands.ToggleBold.Execute( ?, ? ), но как ни вчитываюсь, не могу разобраться с параметрами этой функции. Первый параметр, я так понимаю, можно опустить, но что собой представляет второй? Элемент управления, над которым будет команда выполняться, компилятор кушать не хочет. Если туда поставить null, всё прекрасно запускается, но ничего не работает.
Задача в двух словах: сделать, чтобы кнопка на панели инструментов включала и выключала полужирный. В доке приведён пример точно такой же задачи, но там активно используется XAML, а я о нём ничего не знаю :rolleyes:

Вопросы:
1. Почему обещанного свойства (события?) Command у кнопочки нету? Может я не подключил какой reference? С грехом пополам добился, чтобы хотябы EditingCommands компилятор видел, подключил для этого (через Project->Add Reference...) PresentationCore и PresentationFramework. Может быть, чего-то ещё не хватает?
2. Как вызывать команду вручную - на элемент управления класса RichTextBox?
 
P

Pasha

iceheart
Модель свойств и событий WPF не использует свойства и события CLR/C#. Если коротко, то тебе надо сделать следующее:
1. Определить у кнопки св-во Command. Оно есть у обычного Button. Если у тебя button необчыный - то в его click нужно выполнить команду ручками - EditingCommands.ToggleBold.Execute(null, button1) или просто Execute(null).
2. Задать у окна Command Binding для EditingCommands.ToggleBold и у этого биндинга в Executed менять bold для текстбокса.
А еще лучше - взять книжку макдональда и разобратся с моделью команд.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!