2013-04-05 2 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 контроль, который похож на ViewPager в андроиде. Объект Locations является 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