代码之家  ›  专栏  ›  技术社区  ›  Philipp Schmid

在WPF中恢复窗口位置和大小时发生漂移

  •  1
  • Philipp Schmid  · 技术社区  · 16 年前

    我正在观察一个 每次执行此代码时向上漂移28像素 !

    这是我的密码:

    public partial class MainStudioWindowControl : RibbonWindow
    {
        public MainStudioWindowControl()
        {
            App.MainWindowOwner = this;
            this.Loaded += new System.Windows.RoutedEventHandler(MainStudioWindowControl_Loaded);
        }
    
        void MainStudioWindowControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            System.Windows.Window mainWindow = System.Windows.Application.Current.MainWindow;
            mainWindow.WindowStartupLocation = System.Windows.WindowStartupLocation.Manual;
            if (Studio.Properties.Settings.Default.Width > 0)
            {
                mainWindow.Left = Studio.Properties.Settings.Default.Left;
                mainWindow.Top = Studio.Properties.Settings.Default.Top;
                mainWindow.Width = Studio.Properties.Settings.Default.Width;
                mainWindow.Height = Studio.Properties.Settings.Default.Height;
            }
            Debug.WriteLine(string.Format("Loading: Top = {0}", this.Top));
        }
    
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            base.OnClosing(e);
            System.Windows.Window mainWindow = System.Windows.Application.Current.MainWindow;
            Studio.Properties.Settings.Default.Left = mainWindow.Left;
            Studio.Properties.Settings.Default.Top = mainWindow.Top;
            Studio.Properties.Settings.Default.Width = mainWindow.Width;
            Studio.Properties.Settings.Default.Height = mainWindow.Height;
            Studio.Properties.Settings.Default.Save();
            Debug.WriteLine(string.Format("Saving: Settings.Top = {0}", Studio.Properties.Settings.Default.Top));
        }
    }
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Boyan    16 年前

    试试这个:

    有了这两个变化,对我来说效果很好。窗户每次都出现在它应该出现的地方。