2017-11-11 4 views
0

"Model"、 "ViewModel"、および "View"の3つのアセンブリを使用してXamarin.Formsソリューションをセットアップしようとしています。多くの場合、Windows WPFアプリケーションの前にあります。異なるアセンブリのクラスを使用したXamarin.Formsバインディング

iOSとAndroidのブートストラッププロジェクトには、それぞれ3つのアセンブリへの参照が両方含まれています。ビューアセンブリは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。 タイプVM: のxmlns CLR名前空間には見られないMainPageViewModel:MyApp3.ViewModel;アセンブリ= MyApp3.ViewModel

コード:

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> 

は私だけですかミスいくつかの隠された設定またはこれは私が1つのアセンブリ内に自分のコードを保持するための制限ですか?

答えて

0

はい、あなたはそれを行うことができます、名前を確認します。 ビューモデルのアセンブリ名の名前がMyApp3.ViewModel(プロジェクトのプロパティで確認)であることを確認します。

関連する問題