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上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 2013-04-05 12:23:12