TargetNullValue 在 Xamarin 应用程序的 ListView 中不起作用
TargetNullValue not working in ListView in Xamarin app
如果我的 ListView
没有数据显示在我的 Xamarin Forms 5 应用程序中,但我无法让它工作,我正在尝试显示一些文本或图像。
这是我的 ListView
的样子:
<ListView
x:Name="CustomersList"
ItemsSource="{Binding Customers, TargetNullValue='No customers!'}"
BackgroundColor="Transparent">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell
Text="{Binding FullName}"
TextColor="{StaticResource PrimaryDark}"
Command="{Binding Source={x:Reference Name=CustomersList}, Path=BindingContext.CustomerSelectedCommand}"
CommandParameter="{Binding .}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView
的源在我的 ViewModel
中设置如下
ObservableRangeCollection<CustomerModel> customers;
public ObservableRangeCollection<CustomerModel> Customers
{
get => customers;
set
{
if (customers == value)
return;
customers = value;
OnPropertyChanged();
}
}
如果我的 API 没有调用 returns,我会调用 Customers = null;
当我如上所示使用 TargetNullValue
时,在将 TextCell
绑定到 FullName
时,我确实遇到了错误。它显示:
'FullName' property not found on 'N', target property:
'Xamarin.Forms.TextCell.Text'
然后它为 No Customers!
中的每个字符重复此错误消息。
然后我尝试使用 FallbackValue
。这次我没有收到错误,但它根本没有显示“No Customers!”。留言。
如何处理 ListView
没有数据可显示?至少,我想显示一些简单的文本消息,但显示更好的东西会更好,也许是图片。
如果您可以从 ListView
切换到 CollectionView
,您可以使用 built-in CollectionView.EmptyView
:
<CollectionView ItemsSource="{Binding Customers}"
EmptyView="No customers!" ... />
使用相同的 EmptyView
你可以定义任何视图:
<CollectionView>
<CollectionView.EmptyView>
<ContentView>
<image ... />
</ContentView>
</CollectionView.EmptyView>
</CollectionView>
如果我的 ListView
没有数据显示在我的 Xamarin Forms 5 应用程序中,但我无法让它工作,我正在尝试显示一些文本或图像。
这是我的 ListView
的样子:
<ListView
x:Name="CustomersList"
ItemsSource="{Binding Customers, TargetNullValue='No customers!'}"
BackgroundColor="Transparent">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell
Text="{Binding FullName}"
TextColor="{StaticResource PrimaryDark}"
Command="{Binding Source={x:Reference Name=CustomersList}, Path=BindingContext.CustomerSelectedCommand}"
CommandParameter="{Binding .}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
ListView
的源在我的 ViewModel
ObservableRangeCollection<CustomerModel> customers;
public ObservableRangeCollection<CustomerModel> Customers
{
get => customers;
set
{
if (customers == value)
return;
customers = value;
OnPropertyChanged();
}
}
如果我的 API 没有调用 returns,我会调用 Customers = null;
当我如上所示使用 TargetNullValue
时,在将 TextCell
绑定到 FullName
时,我确实遇到了错误。它显示:
'FullName' property not found on 'N', target property: 'Xamarin.Forms.TextCell.Text'
然后它为 No Customers!
中的每个字符重复此错误消息。
然后我尝试使用 FallbackValue
。这次我没有收到错误,但它根本没有显示“No Customers!”。留言。
如何处理 ListView
没有数据可显示?至少,我想显示一些简单的文本消息,但显示更好的东西会更好,也许是图片。
如果您可以从 ListView
切换到 CollectionView
,您可以使用 built-in CollectionView.EmptyView
:
<CollectionView ItemsSource="{Binding Customers}"
EmptyView="No customers!" ... />
使用相同的 EmptyView
你可以定义任何视图:
<CollectionView>
<CollectionView.EmptyView>
<ContentView>
<image ... />
</ContentView>
</CollectionView.EmptyView>
</CollectionView>