2017-03-08 12 views
2

列挙型プロパティを対象とするトリガに基づいて、私のStackLayoutの背景色を変更しようとしています。Xamarin.Forms - トリガの列挙を使用する

しかし、私は「未処理の例外が発生しました」と表示しています。

トリガーを削除すると、すべて正常に動作します。ここでは、関連するコードは次のとおりです。ここで

<?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:ParkAndRidePrague" 
      xmlns:my="clr-namespace:ParkAndRidePrague.Core.Enums;assembly=ParkAndRidePrague.Core" 
      x:Class="ParkAndRidePrague.MainPage"> 
    <ContentPage.Content> 
     <ListView x:Name="listViewParkings"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <StackLayout BackgroundColor="#eee" 
         Orientation="Vertical"> 
          <StackLayout Orientation="Horizontal"> 
           <Label Margin="10, 5, 0, 5" VerticalTextAlignment="Center" Text="{Binding Name}" TextColor="Black" FontSize="20" /> 
           <Label Margin="0, 5, 10, 5" VerticalTextAlignment="Center" Text="{Binding NumOfFreePlaces}" HorizontalOptions="EndAndExpand" TextColor="Black" FontSize="20" /> 
           <StackLayout.Triggers> 
            <DataTrigger Binding="{Binding Path=ParkingAvailability}" Value="{x:Static my:ParkingAvailability.Low}"> 
             <Setter Property="BackgroundColor" Value="Red" /> 
            </DataTrigger> 
           </StackLayout.Triggers> 
          </StackLayout> 
         </StackLayout> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </ContentPage.Content> </ContentPage> 

が列挙型である:

namespace ParkAndRidePrague.Core.Enums { 
    public enum ParkingAvailability 
    { 
     Low, 
     Medium, 
     High 
    } } 

私はthis question/answerを追っが、それでも、私は見つけることができない何かオフがあるように思われます。

トータル例外:

3月8日11:33:12.511 I/MonoDroid(14705):未処理の例外:03から08 11:33:12.567 I/MonoDroid(14705): Xamarin。 Forms.Xaml.XamlParseException:位置18:38。 Xamarin.Forms.DataTriggerオブジェクトを作成するには、PropertyType TargetTypeが必要です。 3月8日11:33:12.567 I/MonoDroid(14705): Xamarin.Forms.Xaml.CreateValuesVisitor.Visit(Xamarin.Forms.Xaml.ElementNodeノード、Xamarin.Forms.Xaml.INode のparentNode)における[0x0014b ] のC:¥BuildAgent3¥work¥ca3766cfc22354a1¥Xamarin.Forms.Xaml¥CreateValuesVisitor.cs:77 03-08 11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.Xaml.ElementNode.Accept (Xamarin.Forms.Xaml.IXamlNodeVisitor訪問者、Xamarin.Forms.Xaml.INode のparentNode)0x000b1] Cで:\ BuildAgent3作業\ \ ca3766cfc22354a1 \ Xamarin.Forms.Xaml \ XamlNode.cs:176 03から08 11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.Xaml.ElementNode.Accept (Xamarin.Forms.Xaml.IXamlNodeVisitor訪問者、Xamarin.Forms.Xaml.INode parentNode)[0x00054] C:\ BuildAgent3 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Xaml \ XamlNode.cs:171 03-08 11 :33:12.568 I/MonoDroid(14705): Xamarin.Forms.Xaml.ElementNode.Accept(Xamarin.Forms.Xaml.IXamlNodeVisitor訪問者、Xamarin.Forms.Xaml.INode のparentNode)における[0x00089] Cで: \ BuildAgent3 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Xaml \ XamlNode.cs:173 03-08 11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.Xaml.ElementNode.Accept (Xamarin.Forms .Xaml.IXamlNodeVisitorビジター、Xamarin.Forms.Xaml.INode parentNode)[0x00089] in C:\ BuildAgent3 \ work \ ca3 766cfc22354a1 \ Xamarin.Forms.Xaml \ XamlNode.cs:173 3月8日11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.Xaml.ApplyPropertiesVisitor + <> c__DisplayClass32_0.b__0 (AT)0x0008a]で C:¥BuildAgent3¥work¥ca3766cfc22354a1¥Xamarin.Forms.Xaml¥ApplyPropertiesVisitor.cs:474 03-08 11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.ElementTemplate.CreateContent()[0x00026 ] Cで:\ BuildAgent3作業\ \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ ElementTemplate.cs:78 3月8日11:33:12.568 I/MonoDroid(14705): でXamarin.Forms.DataTemplateExtensions.CreateContent( Xamarin.Forms.DataTemplate self、System.Object item、 Xamarin.Forms.BindableObject cont ainer)[0x00014] C:\ BuildAgent3 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ DataTemplateExtensions。CS:12 3月8日11:33:12.568 I/MonoDroid(14705): でXamarin.Forms.TemplatedItemsList 2[TView,TItem].CreateContent (System.Int32 index, System.Object item, System.Boolean insert) [0x00000] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\TemplatedItemsList.cs:527 03-08 11:33:12.568 I/MonoDroid(14705): at Xamarin.Forms.TemplatedItemsList 2 [TView、TItem] .ConvertContent (可能System.Int32 startingIndex、System.Collections.IListアイテム、 System.Boolean forceCreate、System.Boolean setIndex)[0x00014] C:\ BuildAgent3 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ TemplatedItemsList.cs:664 03-08 11:33:12.568 I/MonoDroid(14705) :\ BuildAgent3作業\ \ ca3766cfc22354a1 \ Xamarin: Xamarin.Forms.TemplatedItemsList 2[TView,TItem].OnProxyCollectionChanged (System.Object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e, System.Boolean fixWindows) [0x0017e] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\TemplatedItemsList.cs:1002 03-08 11:33:12.568 I/MonoDroid(14705): at Xamarin.Forms.TemplatedItemsList 2 [TView、TItem]で (System.Objectの送信者、 System.Collections.Specialized.NotifyCollectionChangedEventArgs E) [0x00000] C inを.OnProxyCollectionChangedフォーム。コア\ TemplatedItemsList.cs:954 3月8日11:33:12.568 I/MonoDroid(14705): で(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)をXamarin.Forms.ListProxy.OnCollectionChanged [0x0000a] Cで:\ BuildAgent3 \作業\ ca3766cfc22354a1 \ Xamarin.Forms.Core \ ListProxy.cs:230 3月8日11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.ListProxy + <> c__DisplayClass32_0.b__0 (AT) [0x00018] C:\ BuildAgent3 \ work \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ ListProxy.cs:203 03-08 11:33:12.568 I/MonoDroid(14705): Xamarin.Forms.ListProxy.OnCollectionChanged (System.Object sender、 System.Collections.Specializ ed.NotifyCollectionChangedEventArgs E) [0x000a0] Cで:\ BuildAgent3作業\ \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ ListProxy.cs:222 3月8日11:33:12.568 I/MonoDroid(14705): Xamarinで.Forms.ListProxy +は (System.Objectの送信者、 System.Collections.Specialized.NotifyCollectionChangedEventArgs e)をWeakNotifyProxy.OnCollectionChanged [0x00031] Cで:\ BuildAgent3作業\ \ ca3766cfc22354a1 \ Xamarin.Forms.Core \ ListProxy.cs。 386 3月8日11:33:12.568 I/MonoDroid(14705)は: System.Collections.ObjectModel.ObservableCollection 1[T].OnCollectionChanged (System.Collections.Specialized.NotifyCollectionChangedEventArgs e) [0x00012] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/System/compmod/system/collections/objectmodel/observablecollection.cs:288 03-08 11:33:12.568 I/MonoDroid(14705): at System.Collections.ObjectModel.ObservableCollection 1 [T]で (System.Collections.Specialized.NotifyCollectionChangedAction作用、 を.OnCollectionChangedシステム/オブジェクト/システム/オブジェクト/システム/オブジェクト/システム/オブジェクト/ SystemMap /オブジェクトモデル/オブジェクトモデル/オブジェクトモデル/オブジェクトモデル/ System.Int32インデックス)。 CS:351 3月8日11:33:12.568 I/MonoDroid(14705): System.Collections.ObjectModel.ObservableCollection 1[T].InsertItem (System.Int32 index, T item) [0x00024] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/System/compmod/system/collections/objectmodel/observablecollection.cs:219 03-08 11:33:12.568 I/MonoDroid(14705): at System.Collections.ObjectModel.Collection 1 [T] .Add(Tアイテム)[0x00023] に/ユーザ/ビルダー/ ATデータ/レーン/ 4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/system/collections/objectmodel/collection.cs:67 03-08 11:33:12.568 I/MonoDroid(14705): ParkAndRidePrague .MainPage + d__7.MoveNext()[0x00217] の E:\ Dev \ JakubHolovskyGit \ ParkAndRidePrague \ ParkAndRidePrague \ ParkAndRidePrague \ MainPage.xaml.cs:71 03-08 11:33:12.568 I/MonoDroid(14705):---スタックトレースの終了 例外がスローされた前の場所--- 03-08 11:33:12.568 I/MonoDroid(14705): でSystem.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] /ユーザ/ビルダー/データ/レーン/ 4009/f3074d2c /ソース/モノ/ MCS /クラス/ referencesource/mscorlib /システム/ランタイム/ exceptionservicesに/ exceptionservicescommon.cs:143 3月8日11:33:12.568 I/MonoDroid(14705): System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Taskタスク)[0x00047] /ユーザーがで/ builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter。CS:187 3月8日11:33:12.568 I/MonoDroid(14705): /ユーザ/ビルダーで System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Taskタスク)[0x0002e]で/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 03-08 11:33:12.568 I/MonoDroid(14705): /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Taskタスク)[0x0000b]システム/ランタイム/コンパイラサービス/ TaskAwaiter.cs:128 03-08 11:33:12.568 I/MonoDroid(14705): System.Runtime.CompilerServices.Tas kAwaiter.GetResult()[0x00000] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:113 03-08 11:33:\ Devの\ JakubHolovskyGit \ ParkAndRidePrague \ ParkAndRidePrague \ ParkAndRidePrague \ MainPage.xaml.cs:36 03 Eで ParkAndRidePrague.MainPage + d__4.MoveNext(AT)0x0002c]:12.568 I/MonoDroid(14705) -08 11:33:12.569 I/MonoDroid(14705):---スタックトレースの末尾が 例外がスローされた前の場所--- 03-08 11:33:12.569 I/MonoDroid(14705): System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() /users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesourの [0x0000c] CE/mscorlib /システム/ランタイム/ exceptionservices/exceptionservicescommon.cs:143 3月8日11:33:12.569 I/MonoDroid(14705): System.Runtime.CompilerServices.AsyncMethodBuilderCore.m__0(System.Objectの状態)での[ 0x00000] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:1018 03-08 11:33:12.569 I/MonoDroid(14705): Android.App.SyncContext + c__AnonStorey0。 <> m__0()[0x00000] in /Users/builder/data/lanes/4009/9578cdcd/source/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:35 03-08 11: 33/12.569 I/MonoDroid(14705): /Users/builder/data/lanes/4009/9578cdcd/source/xamarin-android/src/MonoのJava.Lang.Thread + RunnableImplementor.Run()[0x0000b] .Android/Java.Lang/Thread.cs:36 03-08 11:33:12.569 I/MonoDroid(14705): Java.Lang.IRunnableInvoker.n_Run(System.IntPtr jnienv、System.IntPtr native_this) 0x00009] /Users/builder/data/lanes/4009/9578cdcd/source/monodroid/src/Mono.Android/platforms/android-25/src/generated/Java.Lang.IRunnable.cs:81 03-08 11:33:12.569 I/MonoDroid(14705):at(ラッパー動的メソッド) のSystem.Object:dad7aebb-b573-4058-885d-12720b7c63dd(のIntPtr、のIntPtr)

答えて

0

私は、XAMLでいくつかのエラーを持っていました。主に私は使用しなかったStackLayout.Styleスタイルタグ。またTargetType = "{x:Type StackLayout}"が見つかりませんでした。ここで

を修正XAMLです:

<?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:ParkAndRidePrague" 
      xmlns:my="clr-namespace:ParkAndRidePrague.Core.Enums;assembly=ParkAndRidePrague.Core" 
      x:Class="ParkAndRidePrague.MainPage"> 
    <ContentPage.Content> 
     <ListView x:Name="listViewParkings"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <ViewCell> 
         <StackLayout BackgroundColor="#eee" 
         Orientation="Vertical"> 
          <StackLayout Orientation="Horizontal"> 
           <Label Margin="10, 5, 0, 5" VerticalTextAlignment="Center" Text="{Binding Name}" TextColor="Black" FontSize="20" /> 
           <Label Margin="0, 5, 10, 5" VerticalTextAlignment="Center" Text="{Binding NumOfFreePlaces}" HorizontalOptions="EndAndExpand" TextColor="Black" FontSize="20" /> 
           <StackLayout.Style> 
            <Style TargetType="{x:Type StackLayout}"> 
             <Style.Triggers> 
              <DataTrigger TargetType="{x:Type StackLayout}" Binding="{Binding Path=ParkingAvailability}" Value="{x:Static my:ParkingAvailability.Low}"> 
               <Setter Property="BackgroundColor" Value="Red" /> 
              </DataTrigger> 
              <DataTrigger TargetType="{x:Type StackLayout}" Binding="{Binding Path=ParkingAvailability}" Value="{x:Static my:ParkingAvailability.Medium}"> 
               <Setter Property="BackgroundColor" Value="Orange" /> 
              </DataTrigger> 
              <DataTrigger TargetType="{x:Type StackLayout}" Binding="{Binding Path=ParkingAvailability}" Value="{x:Static my:ParkingAvailability.High}"> 
               <Setter Property="BackgroundColor" Value="Green" /> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </StackLayout.Style> 
          </StackLayout> 
         </StackLayout> 
        </ViewCell> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </ContentPage.Content> 
</ContentPage> 
関連する問題