【问题标题】:Setting The Window Position设置窗口位置
【发布时间】:2013-03-27 02:10:04
【问题描述】:

一些背景

我正在编写一个在屏幕上移动多个窗口的应用程序,这需要实时约束。我通常使用以下格式设置窗口位置:

this.Left = position.x;
this.Top = position.y;

问题

我想知道这是否是最快或最有效的方法。设置 Left 会自动触发刷新事件,还是等待 OnRender 事件?

其次,为什么没有一个简单地设置位置的功能?或者这甚至是必要的吗?我知道 Windows API 有 SetWindowPos,但我更愿意远离非托管代码。使用这个功能会更快吗?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    我不确定它是否是最有效的,但多次调用它可能会出现性能问题。这是因为LeftTop 依赖属性有一个PropertyChangedCallback 实例设置为OnPositioningChanged 方法。此方法调用InvalidateArrange。从链接:

    频繁调用 InvalidateArrange 或特别是 UpdateLayout 对性能产生重大影响。

    我知道这是一个显而易见的答案,但最好的方法是对这两种方法进行基准测试,看看哪一种适合你。无论您是走非托管路线还是坚持使用当前方法,我想在某些时候都必须进行相同的渲染调用(很高兴对此进行更正)。

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多