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
}
谢谢你提前!
答
默认ListView
有内部ScrollView
,所以你不需要在你的情况下使用ScrollView
。
你不需要使用scrollview和listview,默认情况下每个列表视图都有内部滚动视图 –
据我所知,listview默认是可滚动的。我会尝试另一种方法,将Listview作为它们所有的父级,并将其内部的网格绑定。猜测,你的网格正在限制你显示的记录数量。 –
@MikeDarwish你说得对,而且这也是感谢提醒我的问题。 – Diceble