Обработчик событий находится в другом классе, чем MainWindow - PullRequest
4 голосов
/ 05 ноября 2011

Поэтому я следовал руководству на следующем сайте, чтобы ограничить количество символов, которые может принимать текстовое поле.

http://www.rhyous.com/2010/06/18/how-to-limit-or-prevent-characters-in-a-textbox-in-csharp/

Моя проблема в том, что я не могу понять, как создать событиеОбработчик триггера во вторичном классе.Как мне сказать VS искать код обработчика событий в этом классе вместо MainWindow?Я пытался найти, но, видимо, не знаю правильных терминов для использования.Ссылка на xaml, которую я использовал, была

xmlns:DigitBox="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 13 апреля 2015

Самый простой способ сделать это - назначить событие в вашем конструкторе.

public MainWindow()
    {
        InitializeComponent();
        TextBoxCurrency.GotFocus += expandedTextBoxEvents.TextBoxCurrencyGotFocus;
        TextBoxCurrency.LostFocus += expandedTextBoxEvents.TextBoxCurrencyLostFocus;
    }

Я искал способ сделать это в XAML и не нашел простого и понятного способа сделать это.

1 голос
/ 05 ноября 2011

Вам гораздо лучше использовать команды и привязки команд. Я не уверен, к какой конкретной команде будет привязано текстовое поле для желаемой функциональности, но одна из целей WPF заключалась в том, чтобы уменьшить использование обработчиков событий в коде.

Проверьте эту статью для обзора команд и эту статью для способа соединения команд с событиями. Командование WPF - одна из самых классных функций, позволяющая полностью разделить проблемы между пользовательским интерфейсом и бизнес-логикой.

В качестве сценария для наихудшего случая вы можете создать собственное текстовое поле, которое наследуется от элемента управления текстового поля, и подключить события в этом классе. Ваш контроль будет многоразовым.

...