Livet에서는 UIDispatcher를 명시적으로 설정하지 않으면 null 예외가 나온다
Livet
Livet은 국산 MVVM 인프라입니다.
MVVM 패턴에 필요한 모든 기능이 갖추어져 있으며 항상 빚을지고 있습니다.
ReadonlyDispatcherCollection
Livet는 ObservableCollection (Model 배열)에서 ViewModel의 배열을 만드는 편리한 도우미 함수를 제공합니다.
CreateReadonlyDispatcherCollection입니다.
MyApplicationViewModel.csVMList = ViewModelHelper.CreateReadOnlyDispatcherCollection(
Model.List,
(m) => new VM(m),
DispatcherHelper.UIDispatcher);
CompositeDisposable.Add(VMList);
이제 Model.List의 변경이 자동으로 VMList에 반영 될 것으로 기대하고 변경을 시도하면 ...
뭔가 null 예외가 나오지만 ... orz
원인과 대처법
Livet.DispatcherHelper.UIDispatcher가 null로 죽었습니다.
해결책이지만 App.xaml.cs의 OnStartUp에서 Livet.DispatcherHelper.UIDispatcher에 App의 Dispatcher를 넣으면 괜찮습니다.
App.xaml.cs /// <summary>
/// App.xaml の相互作用ロジック
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// ↓が必要!
Livet.DispatcherHelper.UIDispatcher = Dispatcher;
}
}
기존의 앱 작성에 도중에 참가했을 때, 이 근처는 이미 선배님이 해주고 있어, 스스로 하려고 했을 때에 조금 빠졌습니다.
Livet의 VS 프로젝트 템플릿으로 프로젝트를 만들면 그런 일이 일어나지 않지만 나중에 NuGet에서 Livet 패키지를 넣은 경우에 빠지기 쉬운 포인트라고 생각합니다.
Reference
이 문제에 관하여(Livet에서는 UIDispatcher를 명시적으로 설정하지 않으면 null 예외가 나온다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nossey/items/4764da9f0aea26a12e21
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
VMList = ViewModelHelper.CreateReadOnlyDispatcherCollection(
Model.List,
(m) => new VM(m),
DispatcherHelper.UIDispatcher);
CompositeDisposable.Add(VMList);
Livet.DispatcherHelper.UIDispatcher가 null로 죽었습니다.
해결책이지만 App.xaml.cs의 OnStartUp에서 Livet.DispatcherHelper.UIDispatcher에 App의 Dispatcher를 넣으면 괜찮습니다.
App.xaml.cs
/// <summary>
/// App.xaml の相互作用ロジック
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// ↓が必要!
Livet.DispatcherHelper.UIDispatcher = Dispatcher;
}
}
기존의 앱 작성에 도중에 참가했을 때, 이 근처는 이미 선배님이 해주고 있어, 스스로 하려고 했을 때에 조금 빠졌습니다.
Livet의 VS 프로젝트 템플릿으로 프로젝트를 만들면 그런 일이 일어나지 않지만 나중에 NuGet에서 Livet 패키지를 넣은 경우에 빠지기 쉬운 포인트라고 생각합니다.
Reference
이 문제에 관하여(Livet에서는 UIDispatcher를 명시적으로 설정하지 않으면 null 예외가 나온다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nossey/items/4764da9f0aea26a12e21텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)