Nano Hash - криптовалюты, майнинг, программирование

Связывание в MvvmCross из скрытого кода представления

Для представления XAML я подключаю его к this.ViewModel.PropertyChanged вот так:

ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

Это связано с тем, что XAML недостаточно гибок для того, чтобы я мог достичь того, чего я хотел бы, напрямую без кода, а также потому, что его код связан исключительно с WinRT / XAML, а не с основным переносимым проектом.

Однако во время конструктора представления свойство ViewModel имеет значение null, поэтому с ним работали следующим образом:

this.Loaded += (s2, e2) =>
ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

Я полагаю, что это (помимо использования строки для ссылки на свойство), вероятно, не очень чисто, и, вероятно, должен быть лучший способ добиться того, чего я хочу. Есть ли более идеальный подход?


Ответы:



2

Да, есть подход получше. Обычно люди используют Джоша Смита. PropertyObserver.

Однако я впервые слышу о MvvmCross. Я разработал собственную кросс-платформенную платформу MVVM, которая включает класс, выполняющий ту же функцию, что и PropertyObserver Джоша Смита. Интересно, у MvvmCross еще нет чего-то подобного.

07.08.2013
  • Существует вспомогательный класс MvxPropertyChangedListener.cs, а также несколько помощников методов расширения - см. Исходный код в github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross/ - обратите внимание, что прослушиватель измененного свойства Mvx использует WeakReferences в своей реализации - это очень важно на платформах Xamarin iOS и Mac (и все еще в некоторой степени важно для Windows и Android), поскольку помогает предотвратить утечки памяти. 07.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..