gpt4 book ai didi

c# - RX : How to bind an IObservable to a property (ReactiveUI)
转载 作者:太空宇宙 更新时间:2023-11-03 20:50:35 24 4
gpt4 key购买 nike

我有课MyClientIObservable<IStatus> (Client.StatusStream())。现在我想合并 ReactiveXReactiveUI .但是文档没有提供任何如何一起使用它们的示例。

到目前为止,我已经尝试了一些扩展方法(例如 .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?
}
}

信息

要通知有关新更新的 gui,必须使用 ObserveOnDispatcher , 请参阅 https://stackoverflow.com/a/55811495/6229375

最佳答案

Status 定义为 output property :

public class AppViewModel : ReactiveObject
{
private readonly ObservableAsPropertyHelper<IStatus> _status;
public string Status => _status.Value;

public MyClient Client { get; }

public AppViewModel(MyClient client)
{
Client = client;
Client.StatusStream().ToProperty(this, x => x.Status, out _status);
}
}

关于c# - RX : How to bind an IObservable<object> to a property (ReactiveUI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55807509/

24 4 0