C#/Outlook互操作文件夹窗口不是模态的

C#/Outlook互操作文件夹窗口不是模态的,c#,wpf,outlook,C#,Wpf,Outlook,我有一个关于Outlook文件夹窗口的问题 当我直接从Outlook调用它时,它工作正常,让我选择一个我想要的文件夹,作为一个模式窗口(这样可以防止Outlook窗口被点击) 但是,当我从Outlook中的自定义WPF窗口调用它时,它的行为就像一个非模式窗口(不禁用WPF窗口,也不阻止它被选中) 所以问题是,我如何使它表现为一个模态窗口,或者我如何禁用我的WPF窗口来阻止用户输入(甚至阻止窗口被选择,就像打开模态窗口一样) 我试图由调度员调用它,但没有用 谢谢 UPD:我使用outlookapi

我有一个关于Outlook文件夹窗口的问题

当我直接从Outlook调用它时,它工作正常,让我选择一个我想要的文件夹,作为一个模式窗口(这样可以防止Outlook窗口被点击)

但是,当我从Outlook中的自定义WPF窗口调用它时,它的行为就像一个非模式窗口(不禁用WPF窗口,也不阻止它被选中)

所以问题是,我如何使它表现为一个模态窗口,或者我如何禁用我的WPF窗口来阻止用户输入(甚至阻止窗口被选择,就像打开模态窗口一样)

我试图由调度员调用它,但没有用

谢谢

UPD:我使用outlookapi方法在其中调用Pickfolder窗口

var folder = NetOffice.OutlookApi.Application.Session.PickFolder();
当我直接从Outlook窗口使用它时,它工作正常,但在自定义窗口中不工作

UPD2:为了显示我的自定义窗口,有如下内容:

var view = new SettingsPageView();
...
var window = new MyMessageBoxWindow(new MyMessageBoxViewModel());
window.DataContext = view.ViewModel;
window.Content = view;
window.ShowDialog(); // that calls System.Windows.Window.ShowDialog() deeper inside

使用IOleWindow和WindowInteropHelper将窗体显示为Outlook主窗口的子窗口

using System.Runtime.InteropServices;
...
IntPtr wnd = new IntPtr(0);         
object window = _application.ActiveWindow();
if (window != null)
{
    IOleWindow oleWindow = window as IOleWindow;
    if (oleWindow != null)
    {
        oleWindow.GetWindow(out wnd);
    }
}
...

if (wnd != IntPtr.Zero)
{
    WindowInteropHelper helper = new WindowInteropHelper(archiveSettingWindow);
    window.Owner = wnd;
}
您可以添加相关代码(打开窗口的代码)吗?我假设您只是忘记了在
Show()
(或类似)方法中传递所有者窗口。