| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Как определить позицию контрола на экране? |
| Автор: MrCherry 5.8.2008, 00:50 |
| Как определить позицию контрола относительно экрана? Нужно создать окошко с позицией на 26 пикселей ниже объекта, на котором кликнули.... |
| Автор: Kefir 6.8.2008, 10:21 |
| http://msdn.microsoft.com/en-us/library/system.windows.window.windowstartuplocation.aspx + http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.getoffset.aspx (это локейшн визуала относительно парента) http://msdn.microsoft.com/en-us/library/ms608865.aspx (это локешн относительно предка) так вот, схема проста, определяешь координаты контрола относительно окна (TransformToAncestor), получаешь координаты окна на десктопе и вычисляешь координаты контрола относительно десктопа. потом вычисляешь координаты для нового окна (например если на 26 пикселей ниже контрола - window_y = control_y + control.ActualHeight + 26, где control_y это координата y контрола относительно десктопа. ну а window_x будет control_x) не знаю зачем это надо, но на всякий случай - обрати внимание на такой контрол как Popup. возможно он больше подойдёт под твои нужды (не надо делать новых окон, а также можно без проблем выставить положение относительно родителя). |
| Автор: MrCherry 6.8.2008, 22:38 |
| аа.. точно! спасибо! теперь вот никак не допру - как сделать так, чтобы при нажатии где то за пределами - оно закрывалось? пытался заюзать Mouse.PreviewMouseUpOutsideCapturedElement событие - не работает... |
| Автор: Kefir 7.8.2008, 13:50 |
| если ты о Popup - то просто поставь StaysOpen = false (оно по дефолту true). если ты о Window - закрывай его на потере фокуса. |
| Автор: MrCherry 7.8.2008, 15:15 | ||
Спасибо, работает. |