2017-08-28 60 views
1

我無法獲得Xamarin.Forms和Catel一起工作。Catel with Xamarin.Forms

我看到這個sample但它似乎已過時。

當我通過的NuGet下載Catel,我得到不同的問題,不同的版本:

  • V5.1:

    編譯時異常:

    Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Obsolete, Version=4.2.4.0, Culture=neutral, PublicKeyToken=1ca091877d12ca03'. Perhaps it doesn't exist in the Mono for Android profile?

  • v5.0:

    運行時例外(創建時new App();):

    Could not load signature of Catel.MVVM.IViewModelFactory:CreateViewModel due to: Could not resolve type with token 01000061 (from typeref, class/assembly System.ComponentModel.IDataErrorInfo, Catel.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null) assembly:Catel.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=null type:System.ComponentModel.IDataErrorInfo member:<none>

  • V4.5 *

    • 使用ViewModelBase:創建應用程序對象時

      運行時異常: 系統。 TypeLoadException:無法與解析式令牌 01000097(從typeref,類/裝配System.Reflection.BindingFlags,Catel.Core,版本= 4.5.4.0,文化=中性公鑰= NULL)

    • 我實施IViewModel

      好吧,主頁加載,綁定工作,構造函數通過參數獲取正確的服務,但是,例如,當我調用'_uiVisualizerService.Show(subPageViewModel);'從命令中,它會拋出'InvalidCastException'。 Catel日誌中的最後一行例外:Injecting properties into type 'SubPage' after construction。但是SubPage和SubPageViewModel絕對是空的。

      詳情:

      ---> System.InvalidCastException: Specified cast is not valid. at Catel.Services.UIVisualizerService+<ShowAsync>d__9.MoveNext() [0x00096] in C:\CI_WS\Ws\97969\Source\Catel\src\Catel.MVVM\Catel.MVVM.Xamarin.Forms\Services\UIVisualizerService.cs:151 at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00011] in <183b200ee49746d48fc781625979428e>:0 at System.Threading.Tasks.Task'1[TResult].GetResultCore (System.Boolean waitCompletionNotification) [0x0002b] in <183b200ee49746d48fc781625979428e>:0 at System.Threading.Tasks.Task'1[TResult].get_Result() [0x0000f] in <183b200ee49746d48fc781625979428e>:0 at Catel.Services.UIVisualizerService.Show (Catel.MVVM.IViewModel viewModel, System.EventHandler``1[TEventArgs] completedProc) [0x00000] in C:\CI_WS\Ws\97969\Source\Catel\src\Catel.MVVM\Catel.MVVM.Xamarin.Forms\Services\UIVisualizerService.cs:125 at XamarinFormsCatel.ViewModels.MainPageViewModel.OnGo() [0x00015] in C:\!Work\Test\XamarinFormsCatel\XamarinFormsCatel\XamarinFormsCatel\XamarinFormsCatel\ViewModels\MainPageViewModel.cs:34 at Xamarin.Forms.Command+<>c__DisplayClass3_0.<.ctor>b__0 (System.Object o) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Command.cs:73 at Xamarin.Forms.Command.Execute (System.Object parameter) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Command.cs:107 at Xamarin.Forms.Button.Xamarin.Forms.IButtonController.SendClicked() [0x0000a] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Button.cs:121 at Xamarin.Forms.Platform.Android.AppCompat.ButtonRenderer+ButtonClickListener.OnClick (Android.Views.View v) [0x0000b] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\AppCompat\ButtonRenderer.cs:298 at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x0000f] in <71828dd8fb5f4508815e23d6996c45c2>:0 at (wrapper dynamic-method) System.Object:4c9f6786-8ab0-4bd8-bdb1-4cc7a3d7ddc7 (intptr,intptr,intptr) -> (Inner Exception #0) System.InvalidCastException: Specified cast is not valid. at Catel.Services.UIVisualizerService+<ShowAsync>d__9.MoveNext() [0x00096] in C:\CI_WS\Ws\97969\Source\Catel\src\Catel.MVVM\Catel.MVVM.Xamarin.Forms\Services\UIVisualizerService.cs:151 <---

我該怎麼辦:

  • 變化defalt Catel.MVVM.dll參考android項目從MonoAndroidportable-net45+wp8+win8+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10。如果沒有完成,編譯將失敗。

  • MainPage.xaml中

    <catel:ContentPage ... xmlns:catel="clr-namespace:Catel.Windows.Controls;assembly=Catel.MVVM">

  • MainPageViewModel。CS

    public class MainPageViewModel : ViewModelBase { }

  • App.cs

    public class App : Catel.Xamarin.Forms.Application<Views.MainPage> { }

  • MainActivity.cs(機器人)

    public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
    { 
        protected override void OnCreate(Bundle bundle) 
        { 
         TabLayoutResource = Resource.Layout.Tabbar; 
         ToolbarResource = Resource.Layout.Toolbar; 
    
         base.OnCreate(bundle); 
    
         Xamarin.Forms.Forms.Init(this, bundle); 
    
         var app = new App(); 
         LoadApplication(app); 
        } 
    } 
    

Windows 7中,64倍。 Xamarin.Forms:2.3.4.267

任何幫助非常感激。

回答

0

該團隊正在改進對Xamarin.Forms的支持。目前沒有例子。預計將在未來幾個月內完成對Xamarin.Forms的v5支持。