Я делаю страницу, содержащую 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
Вы правы, это то, что проблема была. Огромное спасибо! Может быть, мне нужно получить очки 8D – Cheesebaron