Есть ли способ упорядочить методы, которые выполняются до запуска XAML? (МВВМ)
ВMvvm
У меня есть страница с двумя методами, которые запускаются в ViewModel до запуска Xaml. Они выполняются в неправильном порядке, и мне интересно, есть ли способ указать, какой метод запускать первым.
Второй метод — это реализацияIConvertible
интерфейс , используемый для передачи объекта с предыдущей страницы. Я бы хотел, чтобы он запустился первым.
Метод, который запускается первым :Appearing()
, что является ответом MVVM на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# или Мауи?
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;
}