提问人:Bob 提问时间:9/25/2023 最后编辑:Ken WhiteBob 更新时间:9/25/2023 访问量:69
有没有办法对在 XAML 启动之前运行的方法进行排序?(MVVM)
is there a way to order methods that run before the XAML starts? (MvvM)
问:
在一个应用程序中,我有一个页面,其中包含两个方法,它们在 Xaml 运行之前在 ViewModel 中运行。它们以错误的顺序运行,我想知道是否有办法告诉它先运行哪种方法。Mvvm
第二个运行的方法是接口的实现,用于从上一页传递对象。我希望它先运行。IConvertible
首先运行的方法是 ,它是该方法的 MVVM 答案。我希望它排在第二位。Appearing()
OnAppearing
// this method runs first, I would like it to run second
[RelayCommand]
private async Task Appearing()
{
// no access to VideoObj because this method runs before ApplyQueryAttributes
string x = VideoObj.ThumbnailFilename;
}
// this method runs second, I would like it to run first
public void ApplyQueryAttributes(IDictionary<string, object> query)
{
Package = query["Package"] as VideoPackage;
VideoObj = Package.video;
}
在 C# 或 Maui 中,有没有办法订购这种东西?
答:
0赞
Stephen Quan
9/25/2023
#1
为什么不在两者都被触发后触发一个方法,这样它就不会与顺序无关?例如:
bool Appeared { get; set; } = false;
[RelayCommand]
private async Task Appearing()
{
Appeared = true;
if (Appeared && VideoObj !== null) HandleThumbnail();
}
public void ApplyQueryAttributes(IDictionary<string, object> query)
{
Package = query["Package"] as VideoPackage;
VideoObj = Package.video;
if (Appeared && VideoObj !== null) HandleThumbnail();
}
private void HandleThumbnail()
{
string x = VideoObj.ThumbnailFilename;
}
评论
0赞
Bob
9/28/2023
如果我这样做,那么这两种方法都将在 Xaml 运行后发生。我需要这两种方法来运行 xaml 之前。话虽如此,这是一个很好的技术。
评论