Winform: private WPFButton wpfButton1;
this.elementHost2.AutoSize = true;
this.elementHost2.BackColor = System.Drawing.Color.Transparent;
this.elementHost2.ForeColor = System.Drawing.Color.Transparent;
this.elementHost2.Location = new System.Drawing.Point(110, 284);
this.elementHost2.Name = "elementHost2";
this.elementHost2.Size = new System.Drawing.Size(196, 52);
this.elementHost2.TabIndex = 3;
this.elementHost2.Text = "elementHost2";
this.elementHost2.Child = this.wpfButton1;
WPF控件貌似只能在自己那儿获取事件啊? <Grid Height="52" Width="196" Opacity="0.5">
<Button HorizontalAlignment="Right" Style="{DynamicResource GlassButtonStyle}" VerticalAlignment="Top" Width="190" Height="52" Content="Button" Foreground="#FFFFFFFF" Click="Button_Click" />
</Grid>
this.elementHost2.AutoSize = true;
this.elementHost2.BackColor = System.Drawing.Color.Transparent;
this.elementHost2.ForeColor = System.Drawing.Color.Transparent;
this.elementHost2.Location = new System.Drawing.Point(110, 284);
this.elementHost2.Name = "elementHost2";
this.elementHost2.Size = new System.Drawing.Size(196, 52);
this.elementHost2.TabIndex = 3;
this.elementHost2.Text = "elementHost2";
this.elementHost2.Child = this.wpfButton1;
WPF控件貌似只能在自己那儿获取事件啊? <Grid Height="52" Width="196" Opacity="0.5">
<Button HorizontalAlignment="Right" Style="{DynamicResource GlassButtonStyle}" VerticalAlignment="Top" Width="190" Height="52" Content="Button" Foreground="#FFFFFFFF" Click="Button_Click" />
</Grid>
VerticalAlignment="Top"
HorizontalAlignment="Left">
Click="DrawButton_Click"
</Button>
private void DrawButton_Click(object sender, RoutedEventArgs e)
{}
这个事件还是在控件里面发生的啊~怎么返回给winform窗体?DrawButton类里面不能再申明个winform类吧?
另外一个类
public partial class WPFButton : UserControl
{
public WPFButton()
{
InitializeComponent();
} public void Button_Click(object sender, RoutedEventArgs e)
{
}
}
{
public WPFButton()
{
InitializeComponent();
} public EventHandler Click; public void Button_Click(object sender, RoutedEventArgs e)
{
if (Click != null)
Click(sender, e);
}
}
呆会我试试。
{
if (MyWpfButtonClick != null)
MyWpfButtonClick(sender, e);
}
使用的Form:private void Form1_Load(object sender, EventArgs e)
{
this.myWpfButton1.MyWpfButtonClick += new EventHandler(myWpfButton1_MyWpfButtonClick);
}void myWpfButton1_MyWpfButtonClick(object sender, EventArgs e)
{
MessageBox.Show("MyWpfButtonClick");
}
只要在WPF自定义控件类里,暴露这个Button就可以了。这样也不用封装Event了。public Button WpfButton
{
get { return this.button1; }
}
Winform:private void Form1_Load(object sender, EventArgs e)
{
//this.myWpfButton1.MyWpfButtonClick += new EventHandler(myWpfButton1_MyWpfButtonClick);
this.myWpfButton1.WpfButton.Content = "Hello";
this.myWpfButton1.WpfButton.Click += new System.Windows.RoutedEventHandler(WpfButton_Click);
}void WpfButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
MessageBox.Show("MyWpfButton.Button.Click");
}
{
public WPFButton()
{
InitializeComponent();
} public event EventHandler<EventArgs> WPFButtonClick; public void Button_Click(object sender, RoutedEventArgs e)
{
EventHandler<EventArgs> handler = WPFButtonClick;
if (handler != null)
handler(sender, e);
}
}