正确创建双窗口行为

时间:2016-07-03 20:35:43

标签: c# wpf

您好我想创建一个合适的双窗口行为"。如果你不明白我的意思,请点击这里的截图:

enter image description here

目前,我已经使用了此代码:

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快速移动/调整大小时会出现一些闪烁,因为LocationChangedSizeChanged的提升速度并不快老鼠在动。结果是SideWindow的移动方式与MainWindow完全不同。

我想知道是否有更低级别的方法来做到这一点。例如,有一点P / Invoke或类似的......

...或以任何方式附加/绑定/链接两个窗口的Height属性...

...否则,我可以用一个Interval属性为1毫秒的Timer做到这一点,但它看起来太像黑客了。

0 个答案:

没有答案