Полагаю, вы создали конвертер как ресурс:
Количество экземпляров теперь зависит от области, в которой объявлен ресурс конвертера.Если вы создадите его в <Page.Resources>
, будет создан один экземпляр для использования страницей.Если вы создадите его в App.xaml
в <Application.Resources>
, это будет экземпляр для всего приложения.Конечно, вы даже можете использовать более узкую область действия - например, создать ее как ресурс отдельного элемента управления в вашем дереве XAML - в любом случае, при создании экземпляра родительского объекта создается один экземпляр.
Ситуация становится немного интереснее, если вы вставите ее в ItemTemplate
элемента управления списком.Благодаря виртуализации система фактически не будет создавать один экземпляр для каждого элемента.Вместо этого он будет создавать только столько экземпляров, сколько уместится на экране, и они будут повторно использоваться при прокрутке пользователя.
Некоторые разработчики MVVM не любят преобразователи значений, но другие широко их используют.Это действительно вопрос предпочтений.Если вы ожидаете, что базовые данные будут часто меняться, желательно, чтобы код в преобразователе был как можно более быстрым, так как он выполняется в потоке пользовательского интерфейса.