WPF窗口和用户控件事件相互触发
问题1:
WPF项目里有一个窗口和一个用户控件,窗口和用户控件里都有一个Button,点击窗口里的Button如何触发用户控件里Button的Click事件
解答:
//窗口代码 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); contentControl1.Content = new UserControl1(); } private void 窗口Button_Click(object sender, RoutedEventArgs e) { //如何触发 用户控件Button_Click var v = contentControl1.Content as UserControl1; v.DoSomethings(); } }
//用户控件代码 public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void 用户控件Button_Click(object sender, RoutedEventArgs e) { DoSomethings(); } public void DoSomethings() { 用户控件Button.Content = "Hello World"; } }
问题2:
WPF项目里有一个窗口和一个用户控件,窗口和用户控件里都有一个Button,点击用户控件里的Button如何触发窗体里Button的Click事件
解答:
//用户控件代码 private void 用户控件Button_Click(object sender, RoutedEventArgs e) { var w = Window.GetWindow(用户控件Button); // 获取当前窗体 var b = w.FindName("okButton") as Button; // 找到当前窗体上的 okButton b.RaiseEvent(new RoutedEventArgs(e.RoutedEvent)); }
道虽迩,不行不至;事虽小,不为不成。