2

コードを使用して WPF ウィンドウを移動すると、ウィンドウが更新されたときにのみ変更が表示されることに気付きました (最小化してから最大化した場合)。
オンデマンドで WPF の GUI を更新することはできますか?

編集:私は実際にこのウィンドウを別のウィンドウに追従させようとしています。

だから私は他のウィンドウのイベントにフックしています:

    m_wndParent = parent;
    this.Owner = m_wndParent;
    m_wndParent.SizeChanged += ParentSizeChanged;
    m_wndParent.LayoutUpdated += ParentLocationChanged;

次に、ウィンドウの位置を変更します。

   private void ParentLocationChanged(object sender, EventArgs e)
        {
            Window parent = sender as Window;
            this.Top = parent.Top;
            this.Left = parent.Left;
            this.UpdateLayout();
        }
4

2 に答える 2

1

LayoutUpdated(まったく異なる目的を果たします)ではなく、 LocationChangedイベントにParentLocationChangedハンドラーを追加する必要があります。

m_wndParent.LocationChanged += ParentLocationChanged;

private void ParentLocationChanged(object sender, EventArgs e)
{
    var parent = sender as Window;
    Top = parent.Top;
    Left = parent.Left;
}
于 2013-01-06T15:01:23.263 に答える
0

parent.LocationChanged を接続してから、InvalidateVisual を呼び出す必要があります。詳細については、MSDN を参照してください

于 2013-01-06T15:07:44.193 に答える