WPF 앱에 대해 표준 reactive-ui 라우팅을 설정했으며 ViewModel에서 제목 정보를 제공하기 위해 구현할 수있는 인터페이스가 있습니다.Observable 여전히 SelectMany 후 구독
public interface IHaveTitle
{
IObservable<string> Title { get; }
}
하나 개의 뷰 모델에서 나는 다음 (데모 목적)하고 있어요 :
disposer(
ViewModel.Router.CurrentViewModel
.SelectMany(vm =>
((vm as IHaveTitle)?.Title.StartWith("") ??
Observable.Return("")).Select(s => string.IsNullOrEmpty(s) ? vm.UrlPathSegment : $"{vm.UrlPathSegment} > {s}"))
.ObserveOn(RxApp.MainThreadScheduler)
.BindTo(this, w => w.Title));
: 내 메인 윈도우 화면에서
public IObservable<string> Title => Observable.Interval(TimeSpan.FromSeconds(5)).Select(_ => DateTime.Now.ToLongTimeString());
을, 나는 다음과 같은 일을 해요 여기서 disposer
은 Action<IDisposable>
이고, 확장 방법은 this.WhenActivated
입니다.
이제 탐색 할 때 UrlPathSegment
을 반영하여 제목이 변경되고 기본보기 모델에서 제목이 5 초마다 표시되도록 업데이트됩니다.
그러나 내가보고있는 문제는 다른보기 모델로 이동해도 기본보기 모델에서 관찰 할 수있는 제목이 여전히 제목의 변경을 초래한다는 것입니다.
내 질문은 정말로 : 어떻게 방지합니까? CurrentViewModel
을 기반으로 선택하면 내가 멀리 이동할 때 왜 분리되지 않습니까?
가, 난 그냥 전에 그것을 사용하지 않을 것입니다! – Clint