Каков наилучший способ показать окно WPF в месте расположения мыши (вверху слева от мыши)?

Я обнаружил, что это работает ЧАСТЬ времени, унаследовав точку мыши Windows Forms и вычтя высоту и ширину моего окна, чтобы установить левую и верхнюю части (поскольку размер моего окна фиксирован):

MyWindowObjectThatInheritsWindow window = new MyWindowObjectThatInheritsWindow();
System.Windows.Point mouseLocation = GetMousePositionWindowsForms();
window.Left = mouseLocation.X - 300;
window.Top = mouseLocation.Y - 240;
window.Show();

Изменить: Вот код для получения позиции мыши ...

public System.Windows.Point GetMousePositionWindowsForms()
{
    System.Drawing.Point point = System.Windows.Forms.Control.MousePosition;
    return new System.Windows.Point(point.X, point.Y);
}

Обратите внимание, что это работает, когда нижний правый край окна касается левого верхнего края курсора мыши. Но это ломается для разных разрешений экрана или может быть несколько мониторов с разной разрешающей способностью? Я еще не полностью сузил его, но я только что попробовал этот же код на другом ПК, и он, кажется, порождает окно не в левом верхнем углу курсора мыши, а в левом нижнем углу и на хорошем расстоянии. мимо него...

Я, вероятно, должен добавить, что мои размеры окна к содержанию, ширине и высоте, так что я не могу просто использовать свойства ActualWidth и ActualHeight, так как они недоступны. Возможно, проблема в том, чтобы правильно подобрать размеры? Есть ли способ сделать это? Я точно знаю, что 300 и 240 соответствуют моим основным ПК с двумя мониторами с разрешением 1920x1080, так как я вычислил ширину и высоту всех объектов в моем окне, которые я явно измерил. Изменить: Только что попытался явно установить высоту и ширину 240/300, чтобы убедиться, что окно больше не соответствует размеру содержимого, и у меня все еще есть эта проблема при вычитании фактической высоты и ширины!

Есть идеи?

Ответы на вопрос(3)

Ваш ответ на вопрос