为WPF添加Windows窗体控件
1、通过XAML实现
1)添加WindowsFormIntegration.dll引用
引用命名空间 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
2)通过XAML来实现
<Grid x:Name="myGrid"> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <WindowsFormsHost> <wf:Button Text="WinForm Button" Click="Button_Click"></wf:Button> </WindowsFormsHost> <WindowsFormsHost Grid.Row="1"> <wf:CheckBox Text="WinForm CheckBox"></wf:CheckBox> </WindowsFormsHost> </Grid>
void button_Click(object sender, EventArgs e) { MessageBox.Show("this is the first windows form Button"); }
2.通过Code来实现
1)使用命名空间
using WindowsForms = System.Windows.Forms;
using System.Windows.Forms.Integration;
2)Code代码
public partial class WPFWithWindowFormControl : Window { public WPFWithWindowFormControl() { this.Loaded += new RoutedEventHandler(WPFWithWindowFormControl_Loaded); InitializeComponent(); } void WPFWithWindowFormControl_Loaded(object sender, RoutedEventArgs e) { WindowsFormsHost host = new WindowsFormsHost(); WindowsForms.Button button = new System.Windows.Forms.Button(); button.Text = "Button1"; button.BackColor = System.Drawing.Color.LightBlue; button.Width = 100; button.Height = 50; button.Click += new EventHandler(button_Click); host.Child = button; host.VerticalAlignment = VerticalAlignment.Top; host.HorizontalAlignment = HorizontalAlignment.Left; WindowsFormsHost host2 = new WindowsFormsHost(); WindowsForms.Button button2 = new System.Windows.Forms.Button(); button2.Text = "Windows Form Button2"; button2.BackColor = System.Drawing.Color.Red; button2.Width = 100; button2.Height = 50; host2.Child = button2; host2.Height = 50; host2.Width = 300; host2.VerticalAlignment = VerticalAlignment.Bottom; host2.HorizontalAlignment = HorizontalAlignment.Right; myGrid.Children.Add(host); myGrid.Children.Add(host2); } void button_Click(object sender, EventArgs e) { MessageBox.Show("this is the first windows form Button"); } }
前台代码:
<Grid x:Name="myGrid">
</Grid>