2016-04-12 3 views
0

フォーム。私は、コンテキストアクションを含むリストビューを持っていると私は特定の状況下でそれを無効にしたい

hereは、ビューセルを自身のXAMLファイルに移動し、OnBindingContextChangedを使用して個々のコンテキストアクションを有効または無効にすることを提案しています。

私は、このようなファイルに表示セルを移動しようとした:

<forms:ViewCell xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:forms="http://xamarin.com/schemas/2014/forms" 
      xmlns:userControls="clr-namespace:Fraedom.UserControls;assembly=Fraedom" 
      x:Class="Fraedom.UserControls.ApprovalTemplate"> 

<forms:ViewCell.ContextActions> 
    <forms:MenuItem Text="Approve" /> 
</forms:ViewCell.ContextActions> 

が、私はこのようなリストビューからそれを参照するときにエラーが出ます:

<ListView.ItemTemplate> 

    <DataTemplate> 
     <dataTemplates:ApprovalTemplate></dataTemplates:ApprovalTemplate> 
    </DataTemplate> 

</ListView.ItemTemplate> 

私も試してみましたビューセルの代わりにDataテンプレートを移動し、コンテンツビュー(両方ともビューではない)でラップすることを試みました。

アイデア?ここで

はエラーです:

System.NullReferenceExceptionObject reference not set to an instance of an object 
     at Xamarin.Forms.Platform.Android.Platform.UpdateGlobalContext (Xamarin.Forms.VisualElement view) [0x0000b] in <filename unknown>:0 
     at Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement element) [0x00000] in <filename unknown>:0 
     at Xamarin.Forms.Platform.Android.ViewCellRenderer.GetCellCore (Xamarin.Forms.Cell item, Android.Views.View convertView, Android.Views.ViewGroup parent, Android.Content.Context context) [0x00058] in <filename unknown>:0 
     at Xamarin.Forms.Platform.Android.CellRenderer.GetCell (Xamarin.Forms.Cell item, Android.Views.View convertView, Android.Views.ViewGroup parent, Android.Content.Context context) [0x00045] in <filename unknown>:0 
     at Xamarin.Forms.Platform.Android.CellFactory.GetCell (Xamarin.Forms.Cell item, Android.Views.View convertView, Android.Views.ViewGroup parent, Android.Content.Context context, Xamarin.Forms.View view) [0x00023] in <filename unknown>:0 
     at Xamarin.Forms.Platform.Android.ListViewAdapter.GetView (Int32 position, Android.Views.View convertView, Android.Views.ViewGroup parent) [0x00193] in <filename unknown>:0 
     at Android.Widget.BaseAdapter.n_GetView_ILandroid_view_View_Landroid_view_ViewGroup_ (IntPtr jnienv, IntPtr native__this, Int32 position, IntPtr native_convertView, IntPtr native_parent) [0x0001a] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Android.Widget.BaseAdapter.cs:509 
     at (wrapper dynamic-method) System.Object:1c8a63a2-474e-436f-9097-a2380578ec91 (intptr,intptr,int,intptr,intptr) 

答えて

0

いくつかのこと...

まずあなたがすでにデフォルトとしてそれを確立してきたとき、あなたはメインフォームのXML名前空間のエイリアスを作成する必要はありません。ドキュメントの名前空間。したがって、xmlns:forms="http://xamarin.com/schemas/2014/forms"をルート要素から削除し、接頭辞forms:をすべて削除することができます。

第二に、あなたはあなたのカスタムViewCellのXAMLの終了タグが欠落しています。それはおそらくあなたのエラーです。セルインフレータプロセスがクラッシュが起こっている場所のように見えます。

私はおそらく代わりにそれのためにカスタムクラスを定義するのに、リソース・ディクショナリにこの細胞テンプレートを置くと思います。ディクショナリリソースエントリとして定義されていても、イベントハンドラをテンプレートにアタッチすることはできます。もちろん、テンプレートを再利用していることを前提としています。このListViewでのみ使用しているのであれば、別のファイルに分割する理由はわかりません。

関連する問題