Почему мои элементы Silverlight UIElements НЕ имеют событий OnPreview? - PullRequest
2 голосов
/ 27 апреля 2010

Я создаю пользовательский Silverlight UserControl, который должен прослушивать события, используя Preview / Tunneling, но по какой-то причине компилятор сообщает мне, что они не распознаны или недоступны.

Например, я могу добавить обработчик событий к MouseLeftButtonDown, но не PreviewMouseLeftButtonDown. Это не имеет смысла, потому что согласно Microsoft (http://msdn.microsoft.com/en-us/library/system.windows.uielement_members(v=VS.100).aspx) все UIElemen ts должны иметь присоединенные события Preview.

Есть идеи, почему это происходит? Я использую пробную версию Visual Studio 2010, Blend 4 RC и .Net 4, если это имеет значение.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2010

Silverlight не поддерживает предварительный просмотр событий и не поддерживает перенаправленные события (пузыри / туннелирование), за исключением нескольких основных событий.

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

// the last parameter indicates we want to receive events that
// were marked as e.Handled = true by other listeners
// this type of event handler can only be done in code
myUserControl.AddHandler(
    UIElement.MouseLeftButtonDownEvent,
    OnMouseLeftButtonDown,
    true
);
1 голос
/ 27 апреля 2010

Вы ищете справку для WPF, а не Silverlight. Silverlight (в основном) является подмножеством WPF, и большая часть его функциональности отсутствует.

Справка Silverlight UIElement не показывает эти события, так как они не существуют в Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...