Есть ли способ упорядочить методы, которые выполняются до запуска 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;
    }
Другие вопросы по тегам