2

タイトルの表示と、作成したカスタム ビューからのグラフの表示ViewPagerで構成されるページを含むページを作成しています。TextViewListView

次のコードを使用して、WP7でこれを正常に機能させています。

<controls:Pivot Title="Stakeholder">
    <controls:PivotItem Header="Last hour">
        <ScrollViewer>
            <ItemsControl ItemsSource="{Binding Locations}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Name}" HorizontalAlignment="Center" />
                            <chart:MiniChartHour MinMaxRange="{Binding ChartHourRange}" Data="{Binding ChartHourSamples}" Margin="0,0,0,15" />
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </controls:PivotItem>

    <!--Pivot item last day-->
    <controls:PivotItem Header="Last day">
        <ScrollViewer>
            <ItemsControl ItemsSource="{Binding Locations}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Name}" HorizontalAlignment="Center" />
                            <chart:MiniChartDay MinMaxRange="{Binding ChartDayRange}" Data="{Binding ChartDaySamples}" Margin="0,0,0,15" />
                        </StackPanel>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>
        </ScrollViewer>
    </controls:PivotItem>
    ...
    More of these here
    ...
</controls:Pivot>

ただし、WP7 では、AndroidPivotに似たコントロールを使用していViewPagerます。LocationsプロパティはsObservableCollectionを保持するaLocationViewModelです。各 には、それぞれLocationViewModel異なる粒度のデータを表示する 4 つの異なるグラフの範囲とデータがあります。上記のコードでは、このLocationsプロパティは問題なく数回バインドされています。しかし、Android で似たようなことをしたい場合、SwissBindingsパスが複数回バインドされているという警告が大量に吐き出されます。Android のビュー コードは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:local="http://schemas.android.com/apk/res/BK.EMS.Stakeholder.UI.Droid.vNext"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <TextView
    android:id="@+id/chartHeader"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:textAppearance="?android:attr/textAppearanceLarge"
    local:MvxBind="Text Name"
    />

  <RelativeLayout
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
    <Mvx.MvxBindableListView 
      android:id="@+id/chartListHour"
      android:layout_height="fill_parent"
      android:layout_width="fill_parent"
      android:cacheColorHint="#00000000"
      android:listSelector="#00000000"
      android:orientation="vertical"
      local:MvxItemTemplate="@layout/chartdetailhour"
      local:MvxBind="ItemSource Locations, Visibility IsHourVisible,Converter=Visibility"
      />

    <Mvx.MvxBindableListView
      android:id="@+id/chartListDay"
      android:layout_height="fill_parent"
      android:layout_width="fill_parent"
      android:cacheColorHint="#00000000"
      android:listSelector="#00000000"
      android:orientation="vertical"
      local:MvxItemTemplate="@layout/chartdetailday"
      local:MvxBind="ItemSource Locations, Visibility IsDayVisible,Converter=Visibility"
      />
    ...
    More of the BindableListViews here
    ...
  </RelativeLayout>
</FrameLayout>

私が得る例外は次のとおりです。

Problem parsing Swiss binding MvxException: You cannot specify Path more than once - first Path 'Locations', second Path 'Visibility IsHourVisible', position 50 in ItemSource Locations, Visibility IsHourVisible,Converter=Visibility
at Cirrious.MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseNextBindingDescriptionOptionInto (Cirrious.MvvmCross.Binding.Interfaces.Parse.MvxSerializableBindingDescription description) [0x00000] in <filename unknown>:0 
at Cirrious.MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseBindingDescription () [0x00000] in <filename unknown>:0 
at Cirrious.MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.ParseTargetPropertyNameAndDescription () [0x00000] in <filename unknown>:0 
at Cirrious.MvvmCross.Binding.Parse.Binding.Swiss.MvxSwissBindingParser.TryParseBindingSpecification (System.String text, Cirrious.MvvmCross.Binding.Interfaces.Parse.MvxSerializableBindingSpecification& requestedBindings) [0x00000] in <filename unknown>:0 
4

1 に答える 1

4

「;」を使用する必要があります。"," の代わりに、複数の binding-description を追加します。

local:MvxBind="ItemSource Locations; Visibility IsDayVisible,Converter=Visibility"

動作するはずです:-)

于 2013-04-05T12:13:25.977 に答える