C# 订阅被动扩展和WPF中的按钮单击

C# 订阅被动扩展和WPF中的按钮单击,c#,wpf,system.reactive,C#,Wpf,System.reactive,我有一个使用被动扩展的WPF应用程序,我正在尝试订阅按钮点击 var click = Observable.FromEvent<RoutedEventHandler,RoutedEventArgs>(h => btn.Click += h,h=> btn.Click -= h); click.Window(n).Subscribe(window => { }); 我还发现像这样的东西应该有用 var click=Observable.FromEve

我有一个使用被动扩展的WPF应用程序,我正在尝试订阅按钮点击

 var click = Observable.FromEvent<RoutedEventHandler,RoutedEventArgs>(h => btn.Click += h,h=> btn.Click -= h);
  click.Window(n).Subscribe(window =>
  {

  });
我还发现像这样的东西应该有用

var click=Observable.FromEventbtn,单击

但这不会被编译。

如果要使用RoutedEventHandler,则不能使用FromEvent。RoutedEventTargets必须使用FromEventPattern才能工作。FromEvent用于非标准的.NET事件

var click = Observable.FromEventPattern<RoutedEventHandler,RoutedEventArgs>(h => btn.Click += h,h=> btn.Click -= h);
  click.Window(n).Subscribe(window =>
  {

  });
如果要使用RoutedEventHandler、RoutedEventTargets,则不能使用FromEvent,必须使用FromEventPattern才能使其工作。FromEvent用于非标准的.NET事件

var click = Observable.FromEventPattern<RoutedEventHandler,RoutedEventArgs>(h => btn.Click += h,h=> btn.Click -= h);
  click.Window(n).Subscribe(window =>
  {

  });

您是否考虑过使用MVVM并将按钮绑定到命令?然后使用Rx订阅此命令的执行?尝试使用RxUI桥接与Rx之间的差距。这种编码违背了最佳实践,很快就会导致无法维护的代码。您是否考虑过使用MVVM并将按钮绑定到命令?然后使用Rx订阅此命令的执行?尝试使用RxUI桥接与Rx之间的差距。这种编码违背了最佳实践,并将很快导致无法维护的代码。