【发布时间】:2019-04-23 20:42:48
【问题描述】:
我有一个客户MyClient,它通过IObservable 提供新的状态。如文档 (https://reactiveui.net/docs/handbook/view-models/boilerplate-code) 中所述,我创建了 ObservableAsProperty 类型的私有属性来获取我的 IObservable 的输出。但要知道我的 GUI 不会在更改时自动更新。
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);
});
}
}
public class AppViewModel : ReactiveObject
{
public IStatus Status { [ObservableAsProperty] get; }
public MyClient Client { get; }
public AppViewModel(MyClient client)
{
Client = client;
Client.StatusStream().ToPropertyEx(this, x => x.Status);
}
}
public interface IStatus
{
string AoiStatus { get; }
}
如果我通过xaml 将gui 与我的DataContext 绑定,一切都会按预期进行。 ViewModel.PropertyChanged 被解雇了,所以我不知道那里出了什么问题?! ????
public partial class MainWindow : ReactiveWindow<AppViewModel>
{
public MainWindow()
{
InitializeComponent();
ViewModel = App.Container.GetInstance<AppViewModel>();
DataContext = this;
}
}
public class AppViewModel : ReactiveObject
{
public IStatus Status { [ObservableAsProperty] get; }
public MyClient Client { get; }
public AppViewModel(MyClient client)
{
Client = client;
Client.StatusStream().ToPropertyEx(this, x => x.Status);
}
}
public interface IStatus
{
string AoiStatus { get; }
}
<TextBlock>
<Run Text="Status:" />
<Run Text="{Binding ViewModel.Status.AoiStatus, Mode=OneWay}"/>
</TextBlock>
【问题讨论】:
-
我还不能评论,所以我把它贴在这里。请参阅:stackoverflow.com/a/2553471/1829812。
标签: c# wpf reactiveui