Управляйте пространством, в котором вы можете перемещать вещи (Silverlight)

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

Представим, что у меня есть интерфейс приложения с несколькими кнопками, древовидным представлением и т. Д., А посередине - холст с некоторыми виджетами, с которыми пользователь может перемещаться и работать, и он может перемещать это пространство, чтобы перемещаться по нему.

Что касается панорамирования, я думал обработать MouseLeftButtonDown в этом пространстве (которое переключает логическое значение UserMoving на true) и MouseMove, чтобы применить его при переводе в пространство (от дельты между двумя событиями), пока я не обнаружить MouseLeftButtonUp, чтобы знать, что он остановился (UserMoving в false). Проблема в том, что если пользователь «нажал левую кнопку мыши» не на самом пространстве (холсте), я никогда не узнаю, что он отпустил мышь. Как лучше всего управлять тем фактом, что он может отпустить панораму (или перетащить виджет) в любом месте приложения?

Кто-нибудь уже делал что-то подобное и может мне помочь?


person Stéphane. D.    schedule 23.01.2011    source источник


Ответы (1)


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

Поднимите курсор мыши и вызовите ReleaseMouseCapture.

person Reed Copsey    schedule 23.01.2011