【问题标题】:Dynamically changing the start up location of a WPF window动态更改 WPF 窗口的启动位置
【发布时间】:2010-12-05 11:12:09
【问题描述】:

这是 [此处][1] 已回答问题的后续问题。

在 XAML 中定义了 WPF 窗口的启动位置。现在我想知道如何在代码中更改这些属性?例如,我可以这样说:

Window1.Top = 40 在窗口加载事件处理程序中?或者我需要为它设置哪个窗口事件来动态改变起始位置?

目标是在渲染之前动态设置窗口的起始位置。

【问题讨论】:

  • 您是尝试从窗口内部设置,还是在创建新窗口时从调用代码设置?

标签: wpf window wpf-positioning


【解决方案1】:

就我个人而言,在调用 InitializeComponent() 之后,我会将“Window1.Top = 40”类型的行放入构造函数中。这肯定会在窗口实际呈现之前被调用。

编辑:糟糕。我应该更仔细地阅读。

您是否试图从某个类而不是窗口本身的类中设置窗口的位置?如果您能够从 Window1 的构造函数中设置 Window1 的位置,我的建议会起作用。

否则,我会说你能做的最好的就是监听窗口的 Loaded 事件并从那里设置位置。

【讨论】:

  • 感谢您的意见!只是出于好奇,就在从另一个类创建窗口时设置窗口的位置而言,您不能只使用定位属性作为参数创建另一个构造函数,然后以相同的方式吗?
  • 是的 - 这将是最简单的方法。
【解决方案2】:

这在代码中很容易做到:

public partial class Window1 {

    public Window1()
    {
         InitializeComponent();
         this.Height = 500;
         this.Width = 500;
         this.WindowStartupLocation = WindowStartupLocation.Manual;
         this.Left = 0;
         this.Top = 0;
    }
}

您可以设置任何您希望的参数,但如果您要设置 Top/Left,请确保设置 WindowStatupLocation(或在 XAML 中将其设置为手动)。

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多