如何从blazor元素';点击事件 @*test.razor*@ 点击

如何从blazor元素';点击事件 @*test.razor*@ 点击,blazor,reactive,rx.net,Blazor,Reactive,Rx.net,我在razor组件中有一个按钮,我想从它的点击事件中创建一个可观察的,我不知道如何做。有人能帮我吗?你可以使用ReactiveUI(在Nuget上) C#视图模型构造函数 @* test.razor *@ <button>click</button> 公共类MyViewModel:ReactiveObject { 公共反应命令MyCommand{get;} 公共MyViewModel() { MyCommand=ReactiveCommand.Create((\u)=

我在razor组件中有一个按钮,我想从它的点击事件中创建一个可观察的,我不知道如何做。有人能帮我吗?

你可以使用ReactiveUI(在Nuget上)

C#视图模型构造函数

@* test.razor *@

<button>click</button>
公共类MyViewModel:ReactiveObject
{
公共反应命令MyCommand{get;}
公共MyViewModel()
{
MyCommand=ReactiveCommand.Create((\u)=>//做一些工作);
}
}
霉素

public class MyViewModel : ReactiveObject
{
   public ReactiveCommand<Unit,Unit> MyCommand {get;}

   public MyViewModel()
   {
       MyCommand = ReactiveCommand.Create((_)=> // do some work);
   }
}
@inherits ReactiveComponentBase<MyViewModel>

<button @onclick=@(()=> ViewModel.MyCommand.Execute().Subscribe() )>click</button>
@继承ReactiveComponentBase
ViewModel.MyCommand.Execute().Subscribe())>单击
或 如果你拒绝使用ReactiveUI(很好!),你可以制作自己的主题。只要确保你妥善处理了所有东西

霉素

public class MyViewModel : ReactiveObject
{
   public ReactiveCommand<Unit,Unit> MyCommand {get;}

   public MyViewModel()
   {
       MyCommand = ReactiveCommand.Create((_)=> // do some work);
   }
}
@inherits ReactiveComponentBase<MyViewModel>

<button @onclick=@(()=> ViewModel.MyCommand.Execute().Subscribe() )>click</button>
command.OnNext(Unit.Default))>单击
@代码{
私有主题命令=新主题();
public IObservable Command=>Command.AsObservable();
}

如果在基于C#的常规UI中有一个事件需要处理,那么我们可以使用
Observable.FromEvent
模式,但Blazor不会处理这样的事件。用C#(UWP,Xamarin)构建的ui改用命令模式。这就是为什么在ReactiveUI中有一个
ReactiveCommand
。UI按钮通常会理解如何处理实现
ICommand
的东西,这使它能够在命令处于非活动状态时禁用自身。(即,当您还没有完成命令的处理时)没有多少Blazor组件可以直接处理ICommand,但是您可以手动让它与它们一起工作。BlazorFluentUI具有用于命令的按钮。(这是我正在使用的组件库。)

我不明白你的问题。你是说如何从System.Responsive创建一个当你点击按钮时调用OnNext()的可观察对象吗?@leempherson是的。在rx.js中,我可以使用
Observable.fromEvent(按钮,'click')
创建一个Observable。在rx.net中,我不知道如何对blazor做同样的事情。