Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не срабатывает "моё" маршрутизируемое событие 
V
    Опции темы
V0fka
Дата 31.10.2013, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Привет!

Сделал свой контрол NumberPicker, унаследованный от UserControl. Состоит он из TextBox-а и пары кнопок. В текстбоксе находится цифра, кнопки делают этой цифре +1 и -1. Помещаю этот свой контрол в основное окно - отображается, кнопки жмутся, +/-1 отрабатывает. Все нормально. Хочу теперь сделать в NumberPicker событие, на которое можно было бы подписаться в основном окне программы. Событие возникает при нажатии на кнопки. На данном этапе оно не срабатывает вообще.

Делаю следующее. В контроле пишу:

Код

public static readonly RoutedEvent ClickButtonPlusMinusEvent;
        
        static NumberPicker()
        {
            ClickButtonPlusMinusEvent = EventManager.RegisterRoutedEvent(
                                                            "ClickButtonPlusMinus",
                                                            RoutingStrategy.Bubble,
                                                            typeof(RoutedEventHandler),
                                                            typeof(NumberPicker)
                                                            );
        }

        public event RoutedEventHandler ClickButtonPlusMinus
        {
            add
            {
                AddHandler(ClickButtonPlusMinusEvent, value);
            }
            remove
            {
                RemoveHandler(ClickButtonPlusMinusEvent, value);
            }
        }



Далее в обработчиках кнопок пишу:

Код

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            int num = Int32.Parse(NumTextBox.Text);
            num--;
            NumTextBox.Text = num.ToString();
            RoutedEventArgs е = new RoutedEventArgs(ClickButtonPlusMinusEvent, this);
            RaiseEvent(e);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            int num = Int32.Parse(NumTextBox.Text);
            num++;
            NumTextBox.Text = num.ToString();
            RoutedEventArgs е = new RoutedEventArgs(ClickButtonPlusMinusEvent, this);
            RaiseEvent(e);
   
        }


В основном окне программы в xaml пишу:

Код

<local:NumberPicker x:Name="Number" ClickButtonPlusMinus="Number_ClickButtonPlusMinus"/>


, в файле кода пишу:

Код

private void Number_ClickButtonPlusMinus(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine("qqq");
        }


Но метод Number_ClickButtonPlusMinus не вызывается никогда.

Подскажите, пожалуйста, как сделать, чтоб оно заработало? smile 
PM MAIL   Вверх
V0fka
Дата 31.10.2013, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Переобозвал е в Button_Click и Button_Click1 и заработало smile .

Чтоб не описывать то, что я писал в первом посте заново, я тут же задам новый вопрос, связанный с этим контролом. В обработчике моего события имеются 2 параметра: object sender, RoutedEventArgs e. А если я хочу туда передать какое-то новое значение, например, +1 или -1, как это делается вообще?  

Это сообщение отредактировал(а) V0fka - 31.10.2013, 16:01
PM MAIL   Вверх
Luuzuk
Дата 6.11.2013, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.11.2013

Репутация: нет
Всего: нет



Как вариант - создать свой класс, наследуемый от RoutedEventArgs, и описать в нем дополнительное свойство

Код

public class MyArgs : RoutedEventArgs
        {
            public MyArgs(RoutedEvent routedEvent, object source, Int32 value)
                : base(routedEvent,source)
            {
                Value = value;
            }


            public Int32 Value { get; private set; }
        }

PM MAIL   Вверх
V0fka
Дата 7.11.2013, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 5.11.2006
Где: Украина

Репутация: нет
Всего: нет



Luuzuk, получилось, спасибо большое! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.