Как отключить событие mousedown в списке Silverlight - PullRequest
0 голосов
/ 18 марта 2012

У меня есть сторонний элемент управления изображением в шаблоне элемента списка SL5. Это делает для хорошей прокручиваемой галереи изображений.

Теперь о проблеме: сторонний элемент управления изображениями (LeadTools v17.5) имеет интерактивную функцию, при которой нажатие кнопки мыши приводит к появлению перетаскиваемой лупы. Это прекрасно работает, когда элемент управления не размещен в списке. Но нажатие на элемент управления в элементе списка ничего не делает. После некоторых исследований я «верю», что это происходит потому, что элемент listbox перехватывает событие mouseleftbuttondown, помечая его как обработанное, поэтому элемент управления изображения никогда его не видит. В моем приложении мне не нужно обрабатывать событие mouseleftbuttondown на уровне списка (другие кнопки и т.д. управляют моим пользовательским интерфейсом). Предполагая, что я прав, есть ли способ остановить привязку listbox к этому событию?

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

Спасибо, Mark

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

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

    private void leadGalleryImageViewer_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        base.OnMouseLeftButtonDown(e);
        e.Handled = true;
    }

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

0 голосов
/ 18 марта 2012

Вместо того, чтобы удерживать ListBoxItem от обработки события, вы можете использовать UIElement.AddHandler с handledEventsToo: true, если сможете получить необходимые UIElement и Delegateссылки для запуска функции управления изображением.

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