вот еще одно решение, надеюсь, что это поможет кому-то
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
Поместите регулятор ElementHost
внутри панели. Затем этот элемент управления может содержать элемент WPF. Из конструктора WinForms вы можете найти этот элемент управления в разделе «WPF Interoperability».
Пример см. В Пошаговое руководство. Хостинг WPF Composite Control в Windows Forms .
, обобщая приведенные выше ответы для быстрой справки:
, если вы не хотите вмешиваться в редактирование проекта и хотите придерживаться конструктора:
обязательно добавьте ссылку для 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
}
Попробуйте прочитать это: Хостинг 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 и запустите приложение.