2017-11-11 158 views
0

我想設置一個Xamarin.Forms解決方案,使用三個程序集「模型」,「視圖模型」和「視圖」來分離我的代碼根據像我這樣的MVVM風格往往在Windows WPF應用程序中。Xamarin.Forms綁定使用不同程序集的類

iOS和Android引導程序項目對這三個程序集中的每一個都有引用View-Assembly具有對ViewModel和Model的引用,ViewModel只引用Model。

我在View-Assembly中添加了一個簡單的「MainPage」,並在ViewModel-Assembly中添加了匹配的「MainViewModel」。 一切都很好,Visual Studio中的Xamarin.Forms-Previewer顯示了一個預覽,其中標籤文本通過綁定到ViewModel來顯示。

在Android模擬器上,應用程序按預期工作。 在iOS上,它嘗試顯示頁面時崩潰。

我想這有很多事情要做:iOS正在使用提前編譯。或者,也許我在xaml中定義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:MainPageViewModel不 的xmlns CLR的命名空間中一些隱藏的設置,或者這是一個限制,所以我必須保持我的代碼在一個大會內?

回答

0

是的,你可以做到這一點,檢查名稱。 檢查視圖模型的程序集名稱是否被命名爲MyApp3.ViewModel(在項目的屬性中檢查它)。