2015-11-30 2 views
1

Я создал приложение Outlook VSTO. Я хочу всплывать диалоговое окно окна WPF при нажатии кнопки. Вот мое WPF окно:показать диалог с окном WPF под Outlook VSTO надстройка

<Window x:Class="WorkflowSR.View.ArchiveSettingWindow" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:WorkflowSR.View" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 
     <CheckBox x:Name="checkBox" Content="CheckBox" HorizontalAlignment="Left" Margin="111,73,0,0" VerticalAlignment="Top" Width="100"/> 
    </Grid> 
</Window> 

В коде, когда я хочу, чтобы открыть окно, я так:

var archiveSettingWindow = new ArchiveSettingWindow(); 
archiveSettingWindow.owner = ??? 
archiveSettingWindow.ShowDialog(); 

Что я должен установить для владельца окна? Спасибо.

ответ

3

Использование IOleWindow и WindowInteropHelper:

 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); 
      helper.Owner = wnd; 
      archiveSettingWindow.ShowInTaskbar = false; 
     } 
Смежные вопросы