"Model", "ViewModel"및 "View"의 세 가지 어셈블리를 사용하여 Xamarin.Forms 솔루션을 설정하여 MVVM 스타일에 따라 코드를 구분하려고합니다. 종종 Windows WPF 응용 프로그램에서.다른 어셈블리의 클래스를 사용하는 Xamarin.Forms 바인딩
iOS 및 Android 부트 스트 래퍼 프로젝트에는 세 개의 어셈블리 각각에 대한 참조가 모두 있습니다. View-Assembly에는 ViewModel 및 Model에 대한 참조가 있으며, ViewModel에는 Model 만 참조합니다.
ViewModel에 간단한 "MainPage"를 추가하고 ViewModel-Assembly에 일치하는 "MainViewModel"을 추가했습니다. 모든 것이 잘 컴파일되고 Visual Studio의 Xamarin.Forms-Previewer에서 ViewModel에 바인딩하여 Label-Text가 표시되는 미리보기를 보여줍니다.
Android 시뮬레이터에서 앱이 예상대로 작동합니다. iOS에서 페이지를 표시하려고하면 충돌이 발생합니다.
나는 이것과 많은 관련이 있다고 생각한다. iOS는 미리 컴파일을하고있다. 아니면 xamns에 xmlns 태그를 정의 할 때 뭔가 잘못된 것이 있습니다.
처리되지 않은 예외 : Xamarin.Forms.Xaml.XamlParseException : 위치 8:10.
namespace MyApp3.ViewModel
{
public class MainPageViewModel
{
public string MyText { get; set; } = "Some Text";
}
}
및 페이지 :
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MyApp3"
xmlns:vm="clr-namespace:MyApp3.ViewModel;assembly=MyApp3.ViewModel"
x:Class="MyApp3.View.MainPage">
<ContentPage.BindingContext>
<vm:MainPageViewModel />
</ContentPage.BindingContext>
<ContentPage.Content>
<StackLayout>
<Label Text="{Binding MyText}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
는 수행 난 그냥 놓칠; 유형의 VM은 : 어셈블리 MyApp3.ViewModel
이
코드 = MyApp3.ViewModel : 의 xmlns CLR-네임 스페이스에서 찾을 수 없습니다 MainPageViewModel 일부 숨겨진 된 설정 또는 제한이 그래서 한 어셈블리 내 코드를 유지해야합니까?