Xamarin Forms Listview 未显示所有项目
Xamarin Froms Listview Not all items are shown
你好 Xamarin 受害者,
我的 ListView 出现问题,其中并未显示 itemsource 中的所有项目。显示了总共 12 个项目中的 6 个。这里有我的 XAML 页面,您可以在其中看到我如何使用列表视图(中间部分使用列表视图):
<?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 个项目都已添加到项目源中。所以我怀疑问题出在这里,但为了解决这个问题,这里是背后的代码:
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
}
提前致谢!
您在 ScrollView 中使用了 ListView。所以也许您的所有项目都在 ListView 中,但您无法滚动到它们。
默认 ListView
有内部 ScrollView
,所以你不需要在你的案例中使用 ScrollView
。
你好 Xamarin 受害者,
我的 ListView 出现问题,其中并未显示 itemsource 中的所有项目。显示了总共 12 个项目中的 6 个。这里有我的 XAML 页面,您可以在其中看到我如何使用列表视图(中间部分使用列表视图):
<?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 个项目都已添加到项目源中。所以我怀疑问题出在这里,但为了解决这个问题,这里是背后的代码:
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
}
提前致谢!
您在 ScrollView 中使用了 ListView。所以也许您的所有项目都在 ListView 中,但您无法滚动到它们。
默认 ListView
有内部 ScrollView
,所以你不需要在你的案例中使用 ScrollView
。