ReactiveUI TwoWay, привязывающий флажок - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть простое представление с флажком и viewModel со свойством [Reactive] bool.

Я бы хотел, чтобы изменение флажка в пользовательском интерфейсе распространялось на свойство viewModel, но я также хотел бы, чтобы состояние флажка пользовательского интерфейса обновлялось, когда свойство viewModel обновляется внешними факторами.

Я предполагал, что двустороннее связывание сделает это

this.Bind(ViewModel, viewModel => viewModel.DepthLabel, view => view._depthLabel.IsChecked) .DisposeWith(disposable);

... но пользовательский интерфейс не отвечает, когда свойство поля изменяется от внешних факторов.

Что я могу сделать, чтобы обновить пользовательский интерфейс? Если это не то, для чего предназначено двустороннее связывание, когда его следует использовать?

1 Ответ

1 голос
/ 23 апреля 2019

Что я могу сделать, чтобы обновить пользовательский интерфейс?

Убедитесь, что в потоке диспетчера установлено свойство DepthLabel source.

Например, в следующем примере кода для CheckBox требуется обновить ObserveOnDispatcher() в представлении для обновления:

public class ViewModel : ReactiveObject
{
    [Reactive]
    public bool DepthLabel { get; set; }

    public ViewModel()
    {
        Observable.Timer(TimeSpan.FromSeconds(2))
           .ObserveOnDispatcher()
           .Subscribe(_ => DepthLabel = true);
    }
}
...