Проблема заключается в том, что окно WPF принимает только файл system.form.window, поэтому я не могу установить Excel в качестве объекта-владельца в приложении VSTO, потому что добавление VSTO предоставляет только Excel hwnd или его активное окно как собственное окно, так как это COM. Это означает, что если WindowStartUpLoadation установлен как владелец центра, он не работает. Поэтому я вынужден обойти это.Как центрировать окно WPF в Excel VSTO addin
То, что я до сих пор читал после чтения this site, состоит в том, чтобы попытаться вручную центрировать окно, но даже с его простым примером мое окно никогда не кажется центрированным.
private static void CenterWpfWindowInExcel(WpfParameterDialog wpfDialog)
{
WindowInteropHelper helper = new WindowInteropHelper(wpfDialog);
helper.Owner = new IntPtr(Globals.ExcelAddin.Application.Hwnd);
// Manually calculate Top/Left to appear centered
double nonWpfOwnerLeft = Globals.ExcelAddin.Application.ActiveWindow.Left; // Get non-WPF owner’s Left
double nonWpfOwnerWidth = Globals.ExcelAddin.Application.ActiveWindow.Width; // Get non-WPF owner’s Width
double nonWpfOwnerTop = Globals.ExcelAddin.Application.ActiveWindow.Top; // Get non-WPF owner’s Top
double nonWpfOwnerHeight = Globals.ExcelAddin.Application.ActiveWindow.Height; // Get non-WPF owner’s Height
wpfDialog.WindowStartupLocation = WindowStartupLocation.Manual;
wpfDialog.Left = nonWpfOwnerLeft + (nonWpfOwnerWidth - wpfDialog.Width)/2;
wpfDialog.Top = nonWpfOwnerTop + (nonWpfOwnerHeight - wpfDialog.Height)/2;
}
Любые идеи?
* Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. * –
Я отредактировал это немного, чтобы уточнить мой смысл, теперь это имеет больше смысла? Я с удовольствием расскажу о более конкретных деталях. –