Управляйте пространством, где вы можете перемещать вещи (Silverlight) - PullRequest
1 голос
/ 24 января 2011

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

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

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

Кто-нибудь уже справился с чем-то подобным и может мне помочь?

1 Ответ

2 голосов
/ 24 января 2011

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

При наведении мыши вызовите ReleaseMouseCapture .

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