在Xamarin.Forms中切换视图(使用XAML)

在Xamarin.Forms中切换视图(使用XAML),xamarin.forms,Xamarin.forms,我在Xamarin.Forms应用程序中有一个页面,显示从web加载的数据。我想在加载时显示一个ActivityIndicator,在加载数据时显示一个列表视图。我想用XAML做这个 我可以这样做吗: if(dataIsLoading) <ActivityIndicator .../> else <ListView ...>...</ListView> if(数据加载) 其他的 ... 我建议您这样做 视图模型 创建IsBusy属性 private

我在Xamarin.Forms应用程序中有一个页面,显示从web加载的数据。我想在加载时显示一个
ActivityIndicator
,在加载数据时显示一个列表视图。我想用XAML做这个

我可以这样做吗:

if(dataIsLoading)
  <ActivityIndicator .../>
else
  <ListView ...>...</ListView>
if(数据加载)
其他的
...

我建议您这样做

视图模型

创建IsBusy属性

private bool\u isBusy=false;
公共图书馆很忙
{
获取{return\u isBusy;}
设置{u isBusy=value;OnPropertyChanged(nameof(isBusy));}
}
转换器

创建一个NotConverter。这只是可以翻转布尔值并在XAML中引用的东西

公共类NotConverter:IValueConverter
{
公共对象转换(对象值、类型targetType、对象参数、CultureInfo区域性)
{
如果(值==null)
返回null;
布尔值=false;
if(Boolean.TryParse(value.ToString(),out Boolean))
返回!布尔值;
返回值;
}
公共对象转换回(对象值、类型targetType、对象参数、CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
查看

参考XAML顶部的转换器

xmlns:converter=“clr命名空间:MobileApp.converter”
在页面资源字典中声明资源


然后在XAML中使用此属性



可以将每个控件的IsVisible属性绑定到VM属性以进行数据加载。或者只需在代码中执行。别忘了在ResourceDictionaryOps中声明您的资源,谢谢@StephaneDelcroix,在上面添加了资源字典定义。