Как сделать навигацию по пользовательскому интерфейсу в надстройке Office Word VSTO? [Дубликат]

вот еще одно решение, надеюсь, что это поможет кому-то

Select a.id , a.rev, a.content from Table1 a
inner join 
(SELECT id, max(rev) rev FROM Table1 GROUP BY id) x on x.id =a.id and x.rev =a.rev
29
задан Darkhydro 19 February 2011 в 22:00
поделиться

3 ответа

Поместите регулятор ElementHost внутри панели. Затем этот элемент управления может содержать элемент WPF. Из конструктора WinForms вы можете найти этот элемент управления в разделе «WPF Interoperability».

Пример см. В Пошаговое руководство. Хостинг WPF Composite Control в Windows Forms .

34
ответ дан Ani 5 September 2018 в 08:10
поделиться

, обобщая приведенные выше ответы для быстрой справки:

, если вы не хотите вмешиваться в редактирование проекта и хотите придерживаться конструктора:

обязательно добавьте ссылку для WindowsFormsIntegration.dll, который обычно представляет собой сборку \ справочные сборки окна \ microsoft \ Framework ...

, и если вы используете пользовательское управление wpf в своем решении, вы, вероятно, уже получили ссылки на

System.Windows.Presentation, System.Windows.Activities, System.Windows.CompnentModel, System.Windows..RunTime, System.Windows.WorkFlowServices, System.Xaml.

, в противном случае обязательно добавьте требуемый переходящие ссылки.

в элементе формы окна вы добавляете wpf usercontrol myWpfUsrCtl в форму окна следующим образом

void addWpfUsrCntl()

    {
        System.Windows.Forms.Integration.ElementHost elemthost1 = new 
        System.Windows.Forms.Integration.ElementHost();
        elemthost1.Dock = DockStyle.None; // change to to suit your need
        elemthost1.Parent = this;
        //elemthost1.AutoSize = true; // change to to suit your need
        FinCurl_.AutoSize = true; // change to to suit your need
        elemthost1.Child = myWpfUsrCtl;
          // and of course , you can add to a control to the form instead.
          // by "this" to the the desired control

}

0
ответ дан gg89 5 September 2018 в 08:10
поделиться

Попробуйте прочитать это: Хостинг WPF-элемента управления в приложении Windows Forms http://community.infragistics.com/wpf/articles/hosting-a-wpf-control-in-a-windows-forms- application.aspx

Сначала добавьте ссылки на пространства имен WPF (PresentationCore, PresentationFramework, UIAutomationProvider, UIAutomationTypes и WindowsBase). Затем создайте экземпляр элемента управления ElementHost и элемент управления, который вы хотите встроить в приложение Windows Forms, а затем подключите этот элемент управления до элемента управления ElementHost. Затем просто добавьте элемент управления ElementHost в коллекцию управления Forms:

    ElementHost host = new ElementHost();
    System.Windows.Controls.ListBox wpfListBox = new System.Windows.Controls.ListBox();
    for (int i = 0; i < 10; i++)
    {
    wpfListBox.Items.Add("Item " + i.ToString());
    }
    host.Dock = DockStyle.Fill;
    host.Controls.Add(wpfListBox);
    this.panel1.Controls.Add(host);

Однако, если вы хотите использовать XAML для описания элемента управления WPF, который вы хотите использовать в приложении Windows Forms, вы должны необходимо добавить элемент Avalon UserControl в свой проект. Это создаст файл UserControl1.xaml и файл UserControl1.xaml.cs. Затем вы можете изменить файл UserControl1.xaml, чтобы указать любой XAML, который вы хотите описать вашим элементом управления. Затем вы просто создадите экземпляр этого элемента управления и добавите его в

ElementHost control as in the above example:
ElementHost host = new ElementHost();
UserControl1 uc1 = new UserControl1();
host.Controls.Add(uc1);
host.Dock = DockStyle.Fill;
this.panel1.Controls.Add(host);

. Кроме того, вам нужно будет изменить файл проекта, потому что приложение Windows не имеет никакого отношения к файлу XAML. Вам нужно будет открыть файл проекта (.csproj, .vbproj и т. Д.) В редакторе, таком как «Блокнот», а затем прокрутите вниз. Вы увидите следующую строку:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Вам нужно будет скопировать эту строку и вставить ее чуть ниже указанной строки, а затем изменить «CSharp» на «WinFX», чтобы две строки выглядели так:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildBinPath)\Microsoft.WinFx.targets" />

Теперь сохраните этот файл и перезагрузите проект с помощью VS и запустите приложение.

Источник: http://windowsclient.net/learn/integration.aspx

4
ответ дан Sergey Gavruk 5 September 2018 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: