Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
108 个问题
我尝试在.net5 WPF中使用.net框架WPFUserControl(当然也是.net框架WPF),以及如何将此控件使用到我的.NET5 Winform?我想。NET5 Winform 不能再使用 ElementHost了。
Note:此问题总结整理于: How Can I Import one .net framework WPFControl or one .net5 WPFControl into The new .net5 Winform?
否,可以在 WinForm 中使用 在 中承载 WPF 控件。Net5,但您需要使用较新版本的 2019。我测试了一个.Net5 WinForm 项目,用于在 中承载 WPF DataGrid。 以下是我的步骤和代码:
第 1 步:
创建一个 .Net5 Winform 项目名为 WPNet5,并将其设为 .csproj,如下所示:ElementHostVisual Studio Enterprise 2019 Version 16.8.1
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
步骤2: 添加名为WPFControls
步骤3: WPFControls.xaml 的代码
<Grid>
<DataGrid x:Name="dataGrid" ItemsSource="{Binding }" AutoGenerateColumns="False" SelectionMode="Extended" SelectionUnit="CellOrRowHeader" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="80" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Age" Width="50" Binding="{Binding Age}" />
<DataGridHyperlinkColumn Header="Email" Width="150" Binding="{Binding Email}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
WPFControls.cs
public partial class WPFControls : UserControl
{
public WPFControls()
{
InitializeComponent();
ObservableCollection<Member> memberData = new ObservableCollection<Member>();
Random radom = new Random();
for (int i = 1; i < 20; i++)
{
Member men = new Member();
men.Age = radom.Next(100).ToString();
men.Name = "JOE" + i.ToString();
men.Email = new Uri("mailto:JOE" + i.ToString() + "+@school.com");
memberData.Add(men);
}
dataGrid.DataContext = memberData;
}
}
public class Member
{
public string Name { get; set; }
public string Age { get; set; }
public Uri Email { get; set; }
}
步骤4: Form1.cs代码:
public partial class Form1 : Form
{
private ElementHost _elemHost = new ElementHost();
private WPFControls _WPFDataGrid = new WPFControls();
public Form1()
{
InitializeComponent();
_elemHost.Location = new Point(10, 10);
_elemHost.Child = _WPFDataGrid;
_elemHost.Width = 400;
_elemHost.Height = 300;
this.Controls.Add(_elemHost);
}
}
骤5: 运行并获取结果图片:
如果回复有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。