如何在 VSTO 加载项中显示 WPF window?

How can I show a WPF window in a VSTO add-in?

我正在第一次将我的 VBA 代码迁移到 VSTO,以便为 excel 创建一个 COM 加载项。我能够将所有代码转换为 vb。不幸的是,我在 VS2017 中创建 Windows 表单时遇到了困难。我尝试添加 windows 表格,但我没有看到任何 Windows 表格。相反,我可以只添加用户控件 (WPF)。

我确实设法使用 XAML 创建了表单,但我遇到的最大问题是如何初始化表单。

下面是导入的

Imports Microsoft.Office.Interop.Excel
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Windows.Forms

我在下面的代码中看到以下错误

句柄 MyBase.Load --> 找不到事件 "Load"

此后我没有看到任何工作。谁能解释一下我们如何处理加载和卸载用户控件 (WPF)。还有为什么我无法导入 windows 表格。

Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim RefSht As Object
    Dim TableList() As String
    Dim IDTable As String
    Dim count As Integer : count = 0
    Dim TextBox1 As System.Windows.Controls.TextBox
    Dim TextBox2 As System.Windows.Controls.TextBox
    Dim TextBox3 As System.Windows.Controls.TextBox
    Dim TextBox4 As System.Windows.Controls.TextBox
    Dim TextBox5 As System.Windows.Controls.TextBox
    Dim TextBox6 As System.Windows.Controls.TextBox
    Dim cmbIDTable As System.Windows.Controls.ComboBox

    Dim wb As Excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook
    RefSht = wb.Worksheets("RefSheet")

    On Error Resume Next
    IDTable = ReportSheet.Range("IDTable")
    TextBox1.Text = ReportSheet.Range("Title")
    TextBox2.Text = ReportSheet.Range("Component")
    TextBox3.Text = ReportSheet.Range("Selection")
    TextBox4.Text = ReportSheet.Range("Parameters")
    TextBox5.Text = ReportSheet.Range("Summary")
    TextBox6.Text = ReportSheet.Range("Category")

    TableList = Split(GetTableListData(), ";")
    cmbIDTable.ItemsSource = TableList
    While IDTable <> TableList(count)
        count = count + 1
    End While
    cmbIDTable.SelectedItem = count
End Sub

经过千辛万苦 运行 问题的背后,我发现 Windows Form 没有安装在我的 VS 中。我已经包含了这个包,现在我可以工作了。