您好我想创建一个合适的双窗口行为"。如果你不明白我的意思,请点击这里的截图:
目前,我已经使用了此代码:
public partial class MainWindow : Window {
Window sideWindow;
public MainWindow() {
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
sideWindow = new SideWindow() { Owner = this };
AdjustSideWindow();
sideWindow.Show();
}
private void AdjustSideWindow(bool heightChanged = false) {
if (!(sideWindow == null)) {
if (heightChanged) sideWindow.Height = this.Height;
sideWindow.Left = this.Left + this.Width;
sideWindow.Top = this.Top;
}
}
private void Window_LocationChanged(object sender, EventArgs e) {
AdjustSideWindow();
}
private void Window_SizeChanged(object sender, SizeChangedEventArgs e) {
AdjustSideWindow(e.HeightChanged);
}
}
但我不满意:在MainWindow
快速移动/调整大小时会出现一些闪烁,因为LocationChanged
和SizeChanged
的提升速度并不快老鼠在动。结果是SideWindow
的移动方式与MainWindow
完全不同。
我想知道是否有更低级别的方法来做到这一点。例如,有一点P / Invoke或类似的......
...或以任何方式附加/绑定/链接两个窗口的Height
属性...
...否则,我可以用一个Interval属性为1毫秒的Timer做到这一点,但它看起来太像黑客了。