2013-04-05 56 views
1

我製作一個頁面,其中包含ViewPager頁面,其中包含顯示標題的TextView和顯示我製作的自定義視圖中的一些圖表的ListView將多個目標綁定到同一個源

我在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但是它使用的是Pivot控制,這是類似於Android上ViewPagerLocations財產是ObservableCollection其中包含LocationViewModel s。 LocationViewModel中的每一個都有4個不同圖表的範圍和數據,每個圖表顯示不同的數據粒度。在上面的代碼中,Locations屬性被綁定幾次而沒有任何問題。然而,當我想在Android上做類似的事情時,SwissBindings發出了很多關於Path的警告不止一次的約束。 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

您應該使用 「;」而不是「,」添加多個綁定描述。

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

應該工作:-)

+0

你是對的,這是什麼問題了。謝謝一堆!也許我應該得到更好的眼鏡8D – Cheesebaron 2013-04-05 12:23:12