SilverMouse — это проект с открытыми исходными кодами, добавляющий некоторый функционал в систему ввода-вывода Silverlight-приложения. Как понятно по названию проекта, библиотека сконцентрирована на работе с мышью. На данный момент выпущена первая бета-версия данной библиотеки. Прошу всех заинтересованных сильверлайтеров принять участие в тестировании данного проекта. Это поможет быстро отловить основные глюки и развивать SilverMouse дальше.
Что бы воспользоваться данной библиотекой нужно:
1. Подключить её
2. Прописать в юсингах пространство имён MoonRainbow.Input.Mouse
3. Используя extended-методы подключить к любому UIElement'у обработчики событий (Attach_название_событий — добавить обработчик, Dettach_ название_событий — удалить обработчик)
При этом нужно понимать, что если в Preview-обработчике вы установите свойство Handled аргументов события в true, то это приведёт к тому что соответствующее событие идущее за Preview-событием просто не возникнет.
Например:
4. Установить параметр приложения windowless в true (параметры инициализации плагина)
Возможности:
— поддержка правой кнопки мыши:
— PreviewMouseRightButtonDown
— MouseRightButtonDown
— PreviewMouseRightButtonUp
— MouseRightButtonUp
— расширение поддержки левой кнопки мыши:
— PreviewMouseLeftButtonUp
— PreviewMouseLeftButtonDown
События с приставкой Preview работают как нисходящие события. Остальные — как восходящие события (смотрите «Стратегии маршрутизации»)
Так же стоит учитывать тот факт, что дополенние начинает работать только в тот момент, когда происходит первое добавление или попытка удаления обработчика выше перечисленных событий.
Ещё один факт: при использовании данной библиотеки пропадает контекстное меню Silvrelight плагина. Это было сделанно намерено. В дальнейшем будет проведена работа на добавление возможности вызова функционала данного контекстного меню.
PS все вопросы и найденные баги мне в личку или в коментарии. Буду благодарен за конструктивные замечания.
Что бы воспользоваться данной библиотекой нужно:
1. Подключить её
2. Прописать в юсингах пространство имён MoonRainbow.Input.Mouse
using MoonRainbow.Input.Mouse;
3. Используя extended-методы подключить к любому UIElement'у обработчики событий (Attach_название_событий — добавить обработчик, Dettach_ название_событий — удалить обработчик)
this.AttachPreviewMouseLeftButtonDown(MouseLeftButtonDownPreview);
this.AttachPreviewMouseLeftButtonUp(MouseLeftButtonUpPreview);
this.AttachPreviewMouseRightButtonDown(MouseRightButtonDownPreview);
this.AttachMouseRightButtonDown(MouseRightButtonDown);
this.AttachPreviewMouseRightButtonUp(MouseRightButtonUpPreview);
this.AttachMouseRightButtonUp(MouseRightButtonUp);
При этом нужно понимать, что если в Preview-обработчике вы установите свойство Handled аргументов события в true, то это приведёт к тому что соответствующее событие идущее за Preview-событием просто не возникнет.
Например:
private void MouseRightButtonDownPreview(object sender, MouseRightButtonEventArgs e)
{
// Отмечаем, что событие перехвачено.
e.Handled = true;
}
private void MouseRightButtonDown(object sender, MouseRightButtonEventArgs e)
{
// любой код написанный здесь никогда не выполнется,
// так как в MouseRightButtonDownPreview e.Handled установлено в true
}
4. Установить параметр приложения windowless в true (параметры инициализации плагина)
Возможности:
— поддержка правой кнопки мыши:
— PreviewMouseRightButtonDown
— MouseRightButtonDown
— PreviewMouseRightButtonUp
— MouseRightButtonUp
— расширение поддержки левой кнопки мыши:
— PreviewMouseLeftButtonUp
— PreviewMouseLeftButtonDown
События с приставкой Preview работают как нисходящие события. Остальные — как восходящие события (смотрите «Стратегии маршрутизации»)
Так же стоит учитывать тот факт, что дополенние начинает работать только в тот момент, когда происходит первое добавление или попытка удаления обработчика выше перечисленных событий.
Ещё один факт: при использовании данной библиотеки пропадает контекстное меню Silvrelight плагина. Это было сделанно намерено. В дальнейшем будет проведена работа на добавление возможности вызова функционала данного контекстного меню.
PS все вопросы и найденные баги мне в личку или в коментарии. Буду благодарен за конструктивные замечания.