powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / IValueConverter и статический класс
5 сообщений из 5, страница 1 из 1
IValueConverter и статический класс
    #38875593
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обычно, чтоб отобразить некий объект в нужном нам виде мы используем конвертеры при связывании.
для этого мы создаем класс наследованный от интерфейса IValueConverter, затем размещаем его в ресурсах и используем с помощью
разметки {StaticResource <имя статического класса>}.

Но, если использовать UserControl, который будет размещаться внутри ListBox другого UserControl'а, то я не могу создать общий ресурс для всех дочерних элементов списка. Если я задам конвертер в ресурсах дочернего контрола списка, получится, что для каждого элемента списка будет создан объект конвертера, а в случаю отсутствия виртуализации, то будет созданы 1000и этих конвертеров.

Нельзя ли просто создать конвертер в статическом классе, объявить для него статическое поле и обращаться через {x:Static <поле статического класс с конвертером>} и не париться? аля:
DependencyProperty1="{Binding Property1, Converter={x:Static nmsp:Class1.Converter1}}"

Чем это чревато, почему это может быть плохо? хочу мнения умный людей :)
...
Рейтинг: 0 / 0
IValueConverter и статический класс
    #38875878
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А откуда данные, что он будет создан для каждого элемента? Что-то мне представляется, что он создастся для экземпляра BindingExpression, т. е. по одному на каждый binding. По крайней мере я не помню, чтоб конвертор вызывал проблемы для больших коллекций.
...
Рейтинг: 0 / 0
IValueConverter и статический класс
    #38875894
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ilya81,

он будет создан для каждого элемента, так как в каждом UserControl'е (дочернем элементе списка) будет экземляра класса конвертера в <UserControl.Resources>, так как сослаться на ресурс родительского элемента в UserControl не получится. Так же отсутствуют <App.Resources>
...
Рейтинг: 0 / 0
IValueConverter и статический класс
    #38876237
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesОбычно, чтоб отобразить некий объект в нужном нам виде мы используем конвертеры при связывании.
для этого мы создаем класс наследованный от интерфейса IValueConverter, затем размещаем его в ресурсах и используем с помощью
разметки {StaticResource <имя статического класса>}.Предпочитаю описывать конвертеры в виде расширений разметки.
Базовый класс
Конвертер

Пример использования:
Код: xml
1.
<TextBlock Text="{Binding Value, Converter={my:CnvToString}}"/>



Roman MejtesНо, если использовать UserControl, который будет размещаться внутри ListBox другого UserControl'а, то я не могу создать общий ресурс для всех дочерних элементов списка. Если я задам конвертер в ресурсах дочернего контрола списка, получится, что для каждого элемента списка будет создан объект конвертера, а в случаю отсутствия виртуализации, то будет созданы 1000и этих конвертеров.Не думаю, что "клоны" конвертеров в данной ситуации окажутся тонким местом. Если конечно в них не выделяется много памяти, что мало вероятно.

Roman MejtesНельзя ли просто создать конвертер в статическом классе, объявить для него статическое поле и обращаться через {x:Static <поле статического класс с конвертером>} и не париться? аля:
DependencyProperty1="{Binding Property1, Converter={x:Static nmsp:Class1.Converter1}}"

Чем это чревато, почему это может быть плохо? хочу мнения умный людей :)Ничего плохого в этом не вижу, если конвертерам не требуется хранить состояние.
...
Рейтинг: 0 / 0
IValueConverter и статический класс
    #38879915
unknownfromrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Не знаю как Вы не смогли создать общий стиль. Но вы совсем забыли, что при размещении стиля в самом первом паренте (в том числе и конвертор, так как он объявляется в ресурсах), у вас автоматом увидят его все его чайлды (даже из разных сборок). Вопрос только в том как вы в парентовый ресурс добавили стили (правильно или нет).
Дизайнер студии будет ругаться, что не видит ресурс, но смело запустив приложение, вы увидите, что все гуд. 100%
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / IValueConverter и статический класс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]