提问人:jxalexan 56 提问时间:11/8/2023 更新时间:11/8/2023 访问量:43
CollectionView 未在 .net MAUI 中显示内容
CollectionView not displaying content in .net MAUI
问:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MonkeyFinder.TopicsPage"
xmlns:model="clr-namespace:MonkeyFinder.Model"
xmlns:viewmodel="clr-namespace:MonkeyFinder.ViewModel"
xmlns:control="clr- namespace:Syncfusion.Maui.ProgressBar;assembly=Syncfusion.Maui.ProgressBar">
<CollectionView BackgroundColor="Transparent">
<CollectionView.ItemTemplate>
<DataTemplate>
<Image Source="traffic_light.png"/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
嗨,这里的 .net MAUI 初学者,试图在选项卡式页面中创建具有数据绑定的 collectionview,但无法显示内容。简化了 CollectionView,但仍然无法显示 collectionview 中的任何内容。我知道collectionview是可见的,因为当我更改collectionview的背景颜色时,页面的颜色会发生变化。如果内容页面位于 collectionview 之外,我还可以看到内容页面中的内容。不知道我做错了什么:/
答:
0赞
Julian
11/8/2023
#1
CollectionView 不是布局。它是数据集合的容器,因此得名。
如果要显示问题代码中的图像,只需使用 Grid 或 VerticalStackLayout:
<Grid>
<Image Source="traffic_light.png"/>
</Grid>
如果要使用数据绑定,则需要绑定源,例如,where 是集合元素的数据类型。ObservableCollection<T>
T
假设你有一个 ViewModel,你可以创建这样一个集合,我们称之为:Items
public class MyViewModel : INotifyPropertyChanged
{
private ObservableCollection<string> items;
public ObservableCollection<string> Items
{
get => items;
set
{
if(items == value) return;
items = value;
OnPropertyChanged();
}
}
public MyViewModel()
{
// populate Items
Items = new ObservableCollection<string>()
{
"hello", "bye", "ciao"
};
}
// skipping INotifyPropertyChanged implementation for brevity
}
在 XAML 中,需要通过表达式将 设置为 CollectionView:Items
ItemsSource
Binding
<CollectionView
ItemsSource="{Binding Items}"
BackgroundColor="Transparent">
<CollectionView.ItemTemplate>
<DataTemplate>
<Image Source="traffic_light.png"/>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
这还要求您在代码隐藏中设置页面:BindingContext
public partial class TopicsPage : ContentPage
{
public TopicsPage()
{
InitializeComponent();
BindingContext = new MyViewModel();
}
}
评论
ItemsSource
ItemsSource