RX:如何将 IObservable<object> 绑定到属性 (ReactiveUI)

我上课MyClient时有IObservable<IStatus>( Client.StatusStream())。现在我想结合ReactiveXand ReactiveUI。但是文档没有提供任何如何一起使用它们的示例。


到目前为止,我已经尝试了一些扩展方法 (fe .ToProperty),但它们不起作用。


public partial class MainWindow : ReactiveWindow<AppViewModel>

{

    public MainWindow()

    {

        InitializeComponent();

        ViewModel = App.Container.GetInstance<AppViewModel>();

        this.WhenActivated(r =>

            {

                this.OneWayBind(ViewModel, viewModel => viewModel.Status.AoiStatus, view => view.StatusTxtbl.Text).DisposeWith(r);

                this.OneWayBind(ViewModel, viewModel => viewModel.Status.OperationMode, view => view.OpModeTxtbl.Text).DisposeWith(r);

                this.OneWayBind(ViewModel, viewModel => viewModel.Status.TestPlan, view => view.TestplanTxtbl.Text).DisposeWith(r);

            });

    }


    private async void ButtonGetStatus_OnClick(object sender, RoutedEventArgs e)

    {

        // the manual mode to get the actual status information

        var status = await ViewModel.Client.GetStatusAsync();

        ViewModel.Status = status;

    }

}


public class AppViewModel : ReactiveObject

{

    private IStatus _Status;

    public IStatus Status

    {

        get => _Status;

        set => this.RaiseAndSetIfChanged(ref _Status, value);

    }


    public MyClient Client { get; }


    public AppViewModel(MyClient client)

    {

        Client = client;

        // automatically pushes every new status information

        Client.StatusStream(); // <- How to get the data out there?

    }

}



LEATH
浏览 66回答 1
1回答

呼唤远方

定义Status为输出属性:public class AppViewModel : ReactiveObject{&nbsp; &nbsp; private readonly ObservableAsPropertyHelper<IStatus> _status;&nbsp; &nbsp; public string Status => _status.Value;&nbsp; &nbsp; public MyClient Client { get; }&nbsp; &nbsp; public AppViewModel(MyClient client)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; Client = client;&nbsp; &nbsp; &nbsp; &nbsp; Client.StatusStream().ToProperty(this, x => x.Status, out _status);&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP