Xamarin栌列表视图并非所有项目都显示

问题描述:

你好老乡Xamarin的受害者,我和我的ListView,其中不从的ItemSource所有项目都显示一个问题Xamarin栌列表视图并非所有项目都显示

。显示总共12个项目中的6个。在这里,你有我的XAML页面,在这里你可以看到我是如何使用ListView(列表视图在middlepart使用):

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="Prototype_Deinceps.views.subject.DetailPage" 
     xmlns:multiplechoices="clr-namespace:Prototype_Deinceps.viewincludes.QuestionTypes;assembly=Prototype_Deinceps" 
     xmlns:CustomElements="clr-namespace:Prototype_Deinceps.CustomElements;assembly=Prototype_Deinceps" 
     Title="Detail"> 
<!-- ToolBar --> 
<ContentPage.ToolbarItems> 
<ToolbarItem Icon="Edit.png"> 
    <ToolbarItem.Text> 
    <OnPlatform x:TypeArguments="x:String" 
       iOS="Wijzig"/> 
    </ToolbarItem.Text> 
</ToolbarItem> 
</ContentPage.ToolbarItems> 

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="6*" /> 
    <RowDefinition Height= "9*" /> 
    <RowDefinition Height="6*" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 

    <!-- Top part of the screen that consist of basic info of the entity--> 
    <StackLayout x:Name="BasicInfo" Margin="10,10,10,5" Grid.Row="0" Grid.Column="0"> 
    <Label Text="Basic Info" FontSize="Large"/> 
    <BoxView Color="Black" WidthRequest ="100" HeightRequest="1"/> 
    <Label x:Name="text1" /> 
    <Label x:Name="text2" /> 
    <Label x:Name="text3" /> 
    <Label x:Name="text4" /> 
    </StackLayout> 
    <Image x:Name="EntityImage" Margin="10" Grid.Row="0" Grid.Column="1"/> 
    <!-- End of Top --> 

    <!-- Middle part of the screen where the questions are displayed about the entity--> 
    <StackLayout x:Name="Questions" Margin="5,10,10,0" Grid.Row="1" Grid.ColumnSpan="2"> 
    <Label Text="Questions" FontSize="Large"/> 
    <BoxView Color="Black" WidthRequest ="100" HeightRequest="1"/> 
    <ScrollView> 
     <ListView x:Name="QuestionListView" 
       HasUnevenRows="True" 
       ItemTapped="OnItemTapped"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
      <ViewCell> 
       <StackLayout x:Name="ListItem" Orientation="Horizontal" > 
       <multiplechoices:MultipleChoice x:Name="multi" IsVisible="{Binding isMultipleChoice} "/> 
       <multiplechoices:TrueFalse IsVisible="{Binding isTrueFalse}"/> 
       <multiplechoices:Text IsVisible="{Binding isText}"/> 
       <multiplechoices:LineText IsVisible="{Binding isLineText}"/>     
      </StackLayout> 
      </ViewCell> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
     </ListView> 
    </ScrollView> 
    </StackLayout> 
    <!-- End of Middle --> 

    <!-- Bottem part of the screen where you can put a note of the entity and save your info--> 
    <StackLayout x:Name="Extra" Margin="0,10,30,5" Grid.Row="2" Grid.ColumnSpan="2"> 
    <Label Text="Opmerkingen" FontSize="Large"/> 
    <BoxView Color="Black" WidthRequest ="100" HeightRequest="1"/> 
    <CustomElements:CustomEditor PlaceHolder="Schrijf hier een opmerking..."/> 
    <Button Text="Opslaan" HorizontalOptions="EndAndExpand" BackgroundColor="#AB001C" TextColor="White"/> 
    </StackLayout> 
    <!-- End of Bottom --> 

</Grid> 
</ContentPage> 

在这里,你有在那里我定义什么我的项目是德一部分。在一个writeline中,我可以看到所有12个项目都被添加到itemsource中。所以我怀疑这个问题是在这里,但为此它的背后的代码:

public partial class DetailPage : ContentPage 
{ 

    public Subject sb; 
    int i; 
    public DetailPage(Subject subject) 
    { 
     InitializeComponent(); 

     sb = subject; 
     TapGestureRecognizer tap = new TapGestureRecognizer(); 
     EntityImage.Source = ImageSource.FromFile("nobody_moriginal.jpg"); 
     text1.Text = subject.text1; 
     text2.Text = subject.text2; 
     text3.Text = subject.text3; 
     text4.Text = subject.text4; 

     tap.Tapped += OnTap; 
     BasicInfo.GestureRecognizers.Add(tap); 

     QuestionListView.ItemsSource = new List<Question> 
     { 
      new Question 
      { 
       Vraag = "1+1=?", 
       TypeQuestion = Question.QuestionTypes.MulptipleChoice 
      }, 
      new Question 
      { 
       Vraag= "Is dit waar?", 
       TypeQuestion = Question.QuestionTypes.TrueFalse 
      }, 
      new Question 
      { 
       Vraag= "Hoe ziet jou leven eruit?", 
       TypeQuestion = Question.QuestionTypes.Text 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      }, 
      new Question 
      { 
       Vraag= "Wat vind u van Tim?(Max 150 karakters)", 
       TypeQuestion = Question.QuestionTypes.LineText 
      },    new Question 
      { 
       Vraag= "Hoe ziet jou leven eruit?", 
       TypeQuestion = Question.QuestionTypes.Text 
      },    new Question 
      { 
       Vraag= "Hoe ziet jou leven eruit?", 
       TypeQuestion = Question.QuestionTypes.Text 
      } 
     }; 
    } 

    private async void OnTap(object sender, EventArgs e) 
    { 
     await Navigation.PushAsync(new BasicInfoPage(sb)); 
    } 

    private void OnItemTapped(object sender, ItemTappedEventArgs e) 
    { 
     if (e == null) return; // has been set to null, do not 'process' tapped event 
     ((ListView)sender).SelectedItem = null; // de-select the row 
    } 

谢谢你提前!

+0

你不需要使用scrollview和listview,默认情况下每个列表视图都有内部滚动视图 –

+0

据我所知,listview默认是可滚动的。我会尝试另一种方法,将Listview作为它们所有的父级,并将其内部的网格绑定。猜测,你的网格正在限制你显示的记录数量。 –

+1

@MikeDarwish你说得对,而且这也是感谢提醒我的问题。 – Diceble

默认ListView有内部ScrollView,所以你不需要在你的情况下使用ScrollView

您在ScrollView中使用ListView。所以也许所有的项目都在ListView中,但是你不能滚动到它们。

+0

我可以滚动浏览我的列表视图。它只是在第六项 – Diceble

+1

中断了。也许我错了。但试试它没有滚动视图 – Vita

+0

不,你是对的。我试过没有滚动视图,它的工作原理。感谢您的帮助!:) – Diceble