大家晚上好。
一段时间以来,我去过Xamarin。我的第一个测试是结论性的。我决定尝试制作一个小型应用程序,该应用程序通过API检索数据库中的信息,然后通过ListView更新此数据。 当我在模拟器上启动该应用程序时,一切正常,但是一旦在手机上安装该应用程序,它就会崩溃。我以为这是因为有API,但我有一个API可用来检查登录/密码是否正常。 返回数据的API在3500/4000左右有很多行,这可能是原因吗?
因此,我通过异步方法在viewModel中传递了数据加载,但是现在的问题是,在正确加载数据之前先加载视图。加载数据后,是否有一种方法可以初始化视图?
在我的代码下面。
初始化我的viewModel
class ManageInventViewModel
{
public ObservableCollection<InventViewModel> InventProduct { get; set; }
public Command<InventViewModel> UpdateCommand
{
get
{
return new Command<InventViewModel>(invent =>
{
var index = invent.IndexLigneInventaire;
InventProduct.Remove(invent);
InventProduct.Insert(index, invent);
});
}
}
public Command<InventViewModel> ResetStock
{
get
{
return new Command<InventViewModel>(invent =>
{
var index = InventProduct.IndexOf(invent);
InventProduct.Remove(invent);
invent.RealStockProduct = 0;
InventProduct.Insert(index, invent);
});
}
}
public ManageInventViewModel()
{
LoadInventaire();
}
private async void LoadInventaire()
{
var listMvt = await Utils.Utils.GetListMouvementUntilDate();
var listStock = Utils.Utils.GetStockByProduct(listMvt).Take(20);
InventProduct = new ObservableCollection<InventViewModel>();
var indexLine = 0;
foreach (var stock in listStock)
{
var inventViewModel = new InventViewModel
{
LibelleProduit = stock.LibelleProduit,
PrCodeProduit = stock.PrCodeProduit,
UpCodeProduit = stock.UpCodeProduit,
RealStockProduct = stock.StockTheoProdct,
StockTheoProdct = stock.StockTheoProdct,
IndexLigneInventaire = indexLine
};
++indexLine;
InventProduct.Add(inventViewModel);
}
}
}
初始化我的观点
public partial class InventPage : ContentPage
{
public InventPage()
{
InitializeComponent();
TableInvent.ItemSelected += (sender, e) =>
{
if (TableInvent.SelectedItem != null)
{
if (TableInvent.SelectedItem is InventViewModel item)
{
PopupNavigation.Instance.PushAsync(new ChangeStockModal(item, this));
}
TableInvent.SelectedItem = null;
}
};
}
private void Reset_Stock(object sender, EventArgs e)
{
var input = sender as Button;
var inventViewModel = input?.BindingContext as InventViewModel;
var listViewModel = BindingContext as ManageInventViewModel;
listViewModel?.ResetStock.Execute(inventViewModel);
}
public void Update_Stock_List(InventViewModel dataStockUpdate)
{
var listViewModel = BindingContext as ManageInventViewModel;
listViewModel?.UpdateCommand.Execute(dataStockUpdate);
PopupNavigation.Instance.PopAsync();
}
}
谢谢
答案 0 :(得分:1)
我设法创建了ActivityIndicator,但是在显示等待屏幕时却无法加载数据。
关于此问题,我看不到代码中的useActivityIndicator,也许您没有更新代码,我想如果您使用useActivityIndicator,您可以将一个属性绑定到ActivityIndicator IsRunning和IsVisible,那么您可以解决您的问题问题。 相关使用ActivityIndicator步骤,您可以看一下: