J'utilise le code ci-dessous pour enregistrer et restaurer la position et la taille de la fenêtre lors du redémarrage.Dérive lors de la restauration de l'emplacement et de la taille de la fenêtre dans WPF
J'observe une dérive de vers le haut de 28 pixels chaque fois que j'exécute ce code! Est-ce que je lis les mauvaises valeurs, ou est-ce que je les restaure incorrectement? D'où vient le numéro 28 (taille du chrome?) (Et comment le comptabiliserais-je par programmation, plutôt qu'un nombre fixe dans le code)?
Voici mon code:
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));
}
}
Oui, je parie que RibbonWindow ne prend pas en compte la barre de titre Windows lorsque vous définissez la propriété Top, mais le fait quand vous l'obtenez. –
Oh chéri, l'Infragistics XamRibbonWindow a exactement le même problème. –