作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我设置 SizeToContent
至WidthAndHeight
,然后 WindowStartupLocation="CenterOwner"
不能正常工作。而不是新窗口的中心位于其父所有者的中心,它看起来更像是子窗口的左上角位于父窗口的中心。
如果我删除 SizeToContent
那么一切都好。
怎么了?
最佳答案
绑定(bind)的动态内容主要是直接通过 GUI 呈现,但有时通过 GUI 调度。计时器和其他线程可以启动 (MVVM) 属性更改事件。可以肯定的是,渲染是在很短的时间内完成的,但不是保证的,因为定位 WPF 调度程序队列的优先级。
所以,你不能说渲染什么时候完成,WPF 也不能说处理的顺序——所以 WPF 现在不能计算 StartPosition 的理想时间。
一个技巧是,等待,WPF 队列是空的。那么你确定,WPF 有时间处理你的代码。这意味着,您延迟了 Window 的 ShowDialog 调用。
所以给GUI-主线程它需要的所有时间 , 执行 MVVM 的动态内容更改或其他动态更改。
不要尝试手动计算位置,非常复杂,支持多显示。
试试这个代码打开窗口,它只打开窗口,当 WPF 完成所有操作 .
win.Dispatcher.Invoke(new Action(() => win.ShowDialog()), DispatcherPriority.ApplicationIdle);
关于wpf中心子窗口不适用于sizetocontent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739490/
我是一名优秀的程序员,十分优秀!