在我的主ViewModel中,我试图转到另一个视图,并通过Dictionary传递一个对象,并使用它在该视图中加载值。我的问题是,它第一次工作,但后来被困在无限负载上,因为在第一次之后,传递的对象每次都是null。
例如,如果我点击按钮调用OpenSpecialInstructionsCommand,它会导航到SpecialInstructions视图和ViewModel,显示我需要看到的一切。完成后,我单击返回箭头转到主页,并找到另一个我想检查其特殊说明的对象。如果我现在点击按钮调用OpenSpecialInstructionsCommand,它会导航到SpecialInstructions,但它会被无限加载。我可以回去,并尝试再次对相同/不同的项目,甚至原来的,它仍然会加载无限期。
主视图模型:
[RelayCommand]
async Task OpenSpecialInstructions()
{
if (LineItem == null)
return;
this.popupPage.Close();
await Shell.Current.GoToAsync(nameof(SpecialInstructions), true, new Dictionary<string,
object>
{
{"LineItem", LineItem }
});
}
这是工作罚款;每次调用时,我都有LineItem对象的正确值。
在新的ViewModel中:
[QueryProperty(nameof(LineItem), "LineItem")]
public partial class SpecialInstructionsViewModel : BaseViewModel
{
[ObservableProperty]
LineItem lineItem;
[RelayCommand]
async Task Instructions_Get()
{
IsBusy = true;
if (App.SpecialInstructions.Count() == 0)
{
await PrefillSpecialInstructions();
}
SpecialInstructions = App.SpecialInstructions;
foreach (SpecialInstruction instruction in App.DbConnection.SpecialInstructions_Get(LineItem.StockNumber))
{
try { SpecialInstructions.FirstOrDefault(x => x.MessageCode == instruction.MessageCode).IsSelected = true; } catch { }
}
IsBusy = false;
}
}
所以对我来说奇怪的是,LineItem是null,直到我们到达调用SpecialInstructions = App.SpecialInstructions;
的那一行,我以为它会早于那一行被初始化。除此之外,当我尝试运行foreach循环时,它从未进入它,因为它被本地数据库中getter的LineItem.StockNumber
部分卡住了。
我想我的问题是为什么LineItem在第一次之后每次都是null?
1条答案
按热度按时间busg9geu1#
所以出于某种原因,我又加了一句
就在foreach循环之前,现在它工作正常。我不明白为什么会这样,但它现在每次都在工作。