반응형
Xamarin 프로젝트에서 MvvmCross 사용하기
MvvmCross 공식 문서 나름 Xamarin.Forms 에서 사용하는 방법을 알려주고 있지만 부족한 점이 많아 추가로 설명드리도록 하겠습니다.
MvvmCross 샘플 중 [MvxForms] 를 참고해보시면 많은 도움이 되실 겁니다. 이 샘플을 기반으로 설명을 드리도록 하겠습니다.
1. MvxApplication 생성
제일 먼저해야 할 일은 MvxApplication 을 상속받아 Serivce 를 등록하고, 시작 ViewModel을 등록하는 작업입니다.
public class CoreApp : MvxApplication
{
public override void Initialize()
{
// 모든 클래스 중 이름이 "Service" 로 끝나는 클래스를 모두 Lazy 방식으로 Singleton 을 IoC 내에 생성합니다.
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
// 시작 ViewModel을 등록합니다.
RegisterAppStart<ViewModels.MvxFormsViewModel>();
}
}
2. Droid 프로젝트
먼저 MainActivity.cs 파일을 수정합니다.
// MvxFormsAppCompatActivity 를 상속받습니다.
public class MainActivity : MvxFormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
}
}
MainActivity 는 MvxFormsAppCompatActivity 를 상속받아, MvxApplication 를 호출할 수 있도록 설정해줍니다.
그리고 플랫폼 종속적인 코드도 등록할 수 있도록 Setup.cs 파일을 만듭니다.
파일 이름은 반드시 "Setup.cs" 여야 합니다.
// MvxFormsAndroidSetup<TApplication, TFormsApplication> 을 상속받습니다.
public class Setup : MvxFormsAndroidSetup<CoreApp, App>
{
// 여기서 플랫폼 종속적인 서비스를 등록할 수 있습니다.
protected override IMvxIoCProvider InitializeIoC()
{
var provider = base.InitializeIoC();
provider.RegisterType<MvxFroms.Core.IService, DroidService>();
return provider;
}
}
3. iOS 프로젝트
iOS 프로젝트도 Droid 프로젝트와 같은 절차로 수정하시면 됩니다.
먼저, AppDelegate.cs 파일을 수정합니다.
// MvxFormsApplicationDelegate<TMvxIosSetup, TApplication, TFormsApplication> 를 상속받습니다.
public partial class AppDelegate : MvxFormsApplicationDelegate<Setup, Core.CoreApp, Core.App>
{
}
Setup.cs 파일을 수정합니다.
public class Setup : MvxFormsIosSetup<CoreApp, App>
{
// 여기서 플랫폼 종속적인 서비스를 등록할 수 있습니다.
protected override IMvxIoCProvider InitializeIoC()
{
var provider = base.InitializeIoC();
provider.RegisterType<MvxFroms.Core.IService, IOSService>();
return provider;
}
}
반응형
'Develop > MAUI 가이드' 카테고리의 다른 글
[Xamarin] TypedDataTemplateSelector (0) | 2020.08.05 |
---|---|
[Xamarin] MvvmCross 데이터 바인딩 (0) | 2020.06.17 |
[Xamarin] MvvmCross 소개 (0) | 2020.06.13 |
[Xamarin] ResourceDictionary 관리 (0) | 2020.06.13 |
[Xamarin] 플랫폼 종속 코드 작성하는 방법 (0) | 2020.06.08 |
꾸준히 노력하는 개발자 "김예건" 입니다.