代码之家  ›  专栏  ›  技术社区  ›  Daniele Sartori

无法正确设置对话框窗口大小和位置目标

  •  0
  • Daniele Sartori  · 技术社区  · 5 年前

    我已经构建了一个对话框窗口,计划在整个应用程序中使用,而不是使用消息框。每当我需要使用它时,我都会在窗口后面的代码中调用它。我目前正在使用这种语法:

    public void ShowDialogWindow(object sender, DialogEventArgs e)
    {
        DialogWindow dialog = new DialogWindow(e.MessageToShow, DialogType.Error, ButtonsType.OkOnly, this.ActualWidth, this.ActualHeight, this);
        dialog.ShowDialog();
    }
    

    这是我的对话窗口的构造函数

    public DialogWindow(string messageToDisplay, DialogType dialog, ButtonsType buttons, double width, double height, object Owner)
    {
        InitializeComponent();
        this.DataContext = this;
        this.Owner = Owner as Window;
        AWidth = width;
        AHeight = height;
        -----
    }
    

    这是XAML中的打开窗口标记

    <Window x:Class="DialogWindow"
            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"
            ---
            mc:Ignorable="d" WindowStyle="None" 
            WindowStartupLocation="CenterOwner"
            AllowsTransparency="True" 
            Width="{Binding AWidth}" Height="{Binding AHeight}" 
            MinHeight="720" MinWidth="1080">
    

    现在我的问题是。当我在最小化所有者(设置minwidth=1080和minheight=720)时调用此对话框时,对话框“有点”合适(窗口和对话框窗口的实际宽度和实际高度相同,但从视觉上看,对话框窗口似乎比所有者大一点)。

    Minimized

    但当我全屏播放时,会发生以下情况:

    Full Screen

    不仅实际高度不同于属性aheight(正确设置为所有者的实际高度),而且根本不在所有者窗口的中心,而是在第二个屏幕上溢出。这是什么原因,我怎么解决?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Daniele Sartori    5 年前

    所以我要把它解决了我的问题,但我完全不知道为什么会发生这样的事情,所以如果有人有更好的答案,我会检查它是否被接受。 为了解决我的问题,我删除了宽度和高度的绑定,并简单地添加到DialogWindow的构造函数中。

    this.Width = OwnerActualWidth;
    this.Height = OwnerActualHeight;
    

    因为我在输入中传递这些参数