我正在尝试将每个事件处理程序从一个控件复制到另一个控件(相同类型)。 我发现有几个例子可以用Winform做,但没有用于WPF ...
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<StackPanel x:Name="panel">
<Button x:Name="btn1"
Content="Button 01"/>
</StackPanel>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
namespace WpfApp1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
btn1.Click += (s, e) => Console.WriteLine("Button pressed");
AddButton();
}
private void AddButton()
{
Button btn2 = new Button() { Content = "Button 02" };
panel.Children.Add(btn2);
// Copy all event handler from btn1 to btn2 ??
}
}
}
问题是我无法访问任何处理程序方法名称,因为我想从另一个类复制事件处理程序...
答案 0 :(得分:3)
我终于找到了有效的here:
以下是我正在使用的解决方案:
postURL = "/cart/add.js";
dataToPost = {quantity:1, id:ProdID};
$.ajax
({
type: "POST",
url: postURL,
data: dataToPost,
dataType:'json',
success: function(){
$.ajax({
type: 'GET',
url: '/cart.js',
dataType: 'json',
contentType: "application/json",
success: function(data) {
cartLen = data.item_count;
cartPrice = ((data.total_price /100)*.9).toFixed(2);
$('#cartCount').html(cartLen);
$('#cartCountMobile').html(cartLen);
$('#cartPrice').html("("+"$"+cartPrice+")");
$('#cartPriceMobile').html("("+"$"+cartPrice+")");
}
});
},
error: function(e){
console.log('ERROR! ', e);
}
});
有了这个,我将Click事件的处理程序和MouseEntered事件的处理程序分配给第二个按钮。