2017-11-11 7 views
0

"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 일부 숨겨진 된 설정 또는 제한이 그래서 한 어셈블리 내 코드를 유지해야합니까?

답변

0

네, 할 수 있습니다. 이름을 확인하십시오. 뷰 모델의 어셈블리 이름의 이름이 MyApp3.ViewModel인지 확인하십시오 (프로젝트 속성에서 확인하십시오).

관련 문제