Странное поведение при положении окна WPF и масштабе больше 100% - PullRequest
0 голосов
/ 28 августа 2018

У меня есть установка с тремя мониторами: левый - 1920x1080 при 100%, центральный и правый - при 3840x2160 при 150%.

Когда я устанавливаю свойство Left окна в 2487, оно появляется на полпути между средним и правым мониторами. Когда я установил свойство Left на 2488, окно переместилось ближе к середине центрального монитора. Это не имеет смысла для меня, даже если я принимаю во внимание DPI.

Если я установлю шкалу монитора на 100%, она будет работать как положено. Я просто пытаюсь понять, как определить, когда окно находится близко к правому краю экрана, и это делает это невозможным.

XAML:

<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="100" Width="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBox x:Name="XLocationBox" Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Center"></TextBox>
        <Button Click="Button_Click" Grid.Column="1" Width="40" Height="30">Set</Button>
    </Grid>
</Window>

Код:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Left = Convert.ToDouble(XLocationBox.Text);
    }
}
...