Ответ 1
var location = myTextBlock.PointToScreen(new Point(0,0));
window.Left = location.X;
window.Top = location.Y-window.Height;
У меня есть представление списка, в котором я определил пользовательскую ячейку в качестве пользовательского элемента управления.
В пользовательской ячейке я дал гиперссылку пользователя, я показываю диалог WPF, когда пользователь нажимает на гиперссылку.
Я хочу, чтобы диалог WPF находился чуть выше гиперссылки.
Пожалуйста, дайте мне знать, как я могу добиться этого или как установить расположение диалогового окна так, чтобы оно просто превысило гиперссылку.
var location = myTextBlock.PointToScreen(new Point(0,0));
window.Left = location.X;
window.Top = location.Y-window.Height;
Вам нужно установить WindowStartupLocation
в Manual
(но это значение по умолчанию), а также установить Top
и Left
значения свойств.
Настройка CenterScreen заставляет окно располагаться в центре экрана, содержащем курсор мыши.
Настройка WindowStartupLocation на CenterOwner заставляет окно располагаться в центре его окна владельца (см. "Владелец" ), если это указано. Окно владельца может быть либо другим окном WPF, либо не WPF-окном.
Вам нужно будет получить координаты гиперссылки, а затем установить положение окна, как показано здесь:
http://blog.fossmo.net/post/How-to-set-the-windows-position-in-WPF.aspx
Чтобы получить относительные/абсолютные позиции элементов, посмотрите здесь несколько советов:
http://ivolo.mit.edu/post/WPF-Mouse-and-Point-Acrobatics.aspx
Если вы установите .Left окна больше, чем размер монитора (2000 работает для меня), окно переходит на второй монитор, и вы можете "максимизировать"