2017-01-30 11 views
0

Я использую Xamarin Forms v2.3.1.114, и я хочу создать страницу опроса в своем приложении.Xamarin Forms Carousel Просмотр потерянных выбранных значений (Образец опроса)

Мой основной класс это:

public class Question 
{ 
    public string Title { get; set; } 
    public List<string> Answers { get; set; } 
} 

Мой пример кода заключается в следующем:

ObservableCollection<Question> Questions = new ObservableCollection<Question>(); 

     Questions.Add (
      new Question() { 
       Title = "Question A", 
       Answers = new List<string>{ 
         "Answer A", 
         "Answer B", 
         "Answer C", 
         "Answer D" 
         } 
      } 
     ); 

     Questions.Add (
      new Question() { 
       Title = "Question B", 
       Answers = new List<string>{ 
         "Answer A", 
         "Answer B", 
         "Answer C", 
         "Answer D", 
         "Answer E", 
         "Answer F" 
       } 
      } 
     ); 

Мои Xaml является следующее:

<Grid Grid.Row="1"> 

     <cv:CarouselView x:Name="CarouselQuestions"> 
     <cv:CarouselView.ItemTemplate> 
     <DataTemplate> 
      <Grid Padding="12"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="*"/>  
      </Grid.RowDefinitions> 
      <Grid Grid.Row="0" BackgroundColor="#404040"> 
       <ContentView Padding="12"> 
         <Label TextColor="White" HorizontalOptions="Start" Text="{Binding Title}"/> 
       </ContentView> 
      </Grid> 
       <ListView Grid.Row="1" ItemsSource="{Binding Answers}" BackgroundColor="Transparent" HasUnevenRows="true"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <ViewCell> 
           <Grid Padding="12"> 
           <Label TextColor="Black" Text="{Binding}"/> 
           </Grid> 
          </ViewCell> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView>   
      </Grid> 
     </DataTemplate> 
     </cv:CarouselView.ItemTemplate> 
     </cv:CarouselView> 

</Grid> 

survey app

Я использую Каро uselView от Nuget, но когда я выбираю значение из одного списка и прокручиваю карусель, выбранные значения теряются.

Как я могу это исправить?

Спасибо!

+0

Вы сделали свой журнал ObservableCollection вопросов глобальным или просто локальным? –

ответ

1

Поскольку Carousel элемент повторно необходимо необходимо обновить выбранный элемент или связывание его в новое свойство ваших деталей CarouselView вам нужно добавить что-то вроде этого:

object _selectedItem; 
public object SelectedItem{ 
    get{ 
     return _selectedItem; 
    } 
    set{ 
     _selectedItem = value; 
     OnPropertyChanged(); 
    } 
} 

И добавить связывание в свой ListView Xaml

<ListView SelectedItem="{Binding SelectedItem}" Grid.Row="1" ItemsSource="{Binding Answers}" BackgroundColor="Transparent" HasUnevenRows="true">