WPF databinding
чем тебе XSLT не угодил?
чем тебе XSLT не угодил?1. Простые вещи часто реализуются нетривиальным кодом.
2. В целом код плохо читаем.
все-таки прикольней.
<mx:Label text=”FirstName: {_person.firstName.toUpperCase}“/>
Для автоматического обновления надо из строчки
_person.firstName.toUpperCase
выцепить "firstName". А если выражение более сложное?
Не знаю насколько приспособлен язык ActionScript (из Flex) для такого, но C# пока на такое не ориентировался. Наверное, можно подумать использовать лямбда-выражения, но они появились в Framework 3.5, а WPF уже входил в Framework 3.0
но они появились в Framework 3.5, а WPF уже входил в Framework 3.0от Microsoft-а, как от одного поставщика, ждешь целостного согласованного решения. А они как всегда, выпускают экспериментальные версии, и испытывают их на нас. Почему бы не проводить такие эксперименты в каких-нибудь исследовательских лабораториях...
А если выражение более сложное?Чето я ничего не понимаю, можно конкретный пример где чего не работает?
А если выражение более сложное?не понятно все? или не понятно конкретно то, что ты выделил?
Чето я ничего не понимаю, можно конкретный пример где чего не работает?
Все работает, но в WPF слишком много кода для такого простого случая.
Чисто кодом в WPF обходится можно, но часто протые вещи на вид в XAML, делаются сложно кодом.
или не понятно конкретно то, что ты выделил?То что выделил.
но в WPF слишком много кода для такого простого случая.
Ты один раз напишешь конвертер и можеш его использовать в десяти местах, а используя входящие параметры можно вообще написать набор конвертеров на все случаи жизни.
правильно, и делай эти конверторы дружелюбными к XAML, чтобы создавать конкретные их экземпляры декларативно
Напиши свою библиотеку конверторов.
Ты один раз напишешь конвертер и можеш его использовать в десяти местах, а используя входящие параметры можно вообще написать набор конвертеров на все случаи жизни.
ребят, просто ЛОЛ , вы что издеваетесь. Будет время напишу, что своя библиотека, к тому же, конвертеров это плохо.
и делай эти конверторы дружелюбными к XAML, чтобы создавать конкретные их экземпляры декларативнотк объясни что ж вас так притягивает "декларативно" на XAML-е? я там в первом посте спрашивал об этом.
замечу, что я выступаю не за то, чтобы все кодом на C# писать. Я за разумный баланс. WPF на мой взгляд начала злоупотреблять XMAL-ом.
Сделай свойство FirstNameInUpper и биндись к нему
Сделай свойство FirstNameInUpper и биндись к немуда, я вот как раз ехал в метро, и думал над тем, может все "расчеты" надо засовывать в бизнес-объекты. Но пока я не пришол к окончательному выводу, правильно ли это.
Можно сделать класс PersonForGui, который в конструкторе берет исходного Person и выставляет свойства, предназначенные именно для биндинга.
Обернуть таким образом все бизнес-объекты.
Тут могут возникнуть небольшие заморочки с коллекциями.
Вообще, тут бы кодогенерация неплохо пошла, как и для объектов, мапленных на БД и объектов DTO для передачи меж App-доменами. Они часто очень похожие, но все-таки разные
Еще в GUI пользователи <почему-то> не хотят видеть имя колонки в гриде "PersonNameInUpper", а хотят "User name".
http://www.codeproject.com/KB/WPF/wpfdatabinding.aspx
P.S. в конце страничке оказалось, что автор из России
Да, меня в БО это засовывать тоже не очень прельщает, но пока ничего лучшего не придумал.Можно сделать класс PersonForGui, который в конструкторе берет исходного Person и выставляет свойства, предназначенные именно для биндинга.Обернуть таким образом все бизнес-объекты.Тут могут возникнуть небольшие заморочки с коллекциями.Вообще, тут бы кодогенерация неплохо пошла, как и для объектов, мапленных на БД и объектов DTO для передачи меж App-доменами. Они часто очень похожие, но все-таки разныеЕще в GUI пользователи <почему-то> не хотят видеть имя колонки в гриде "PersonNameInUpper", а хотят "User name".похоже на Model-View-ViewModel паттерн, который как раз заточен под WPF binding, насколько я понимаю.
Model-View-ViewModel паттернда главное придумать название паттерну, и все само сделается .
Статья малоинформативная, суть можно было изложить в двух преложениях:
XAML то вроде у нас для дизайнеров. Кодеры наваяли бизнес-правила в бизнес- объектах И тут неожиданно выясняется, что прога то не работает, оказывается, что еще что-то надо. А что это что-то? И где его место? Не долго думая вводим еще один уровень. Над названием нам тоже лень думать, поэтому остановимся на комбинации слов ViewModel А уж примеры кода сами напишите...
вообще идея простая — для программиста код ГУИ заканчивается на ViewModel, а XAML уже дело техники (с дизайнером или без — не так важно). Главное, связка ViewModel-XAML-GUI получается тонкой, там уже тестировать нечего, декларативное описание databinding лучше всяких юнит тестов (все остальное за тебя в Майкрософт протестировали).
Оставить комментарий
6yrop
а что, действительно, в WPF, чтобы вывести имя большими буквами, столько кода надо написсать?(взято отсюда http://flexwinds.wordpress.com/2007/02/15/flex-and-wpf-a-com... )
К тому же все нетипизированно object value....
Да же в ASP.NET-е такое простое преобразование можно выполнить по месту.
И вы говорите, что это упрощает процесс разработки?
Кстати, объясните мне сакральный смысл слова "декларативно"
Просто уже от нескольких людей слышал, что, типа, как круто определять что-то декларативно в ASP.NET, в WPF или еще где-то. Насколько я понимаю, в случае ASP.NET и WPF термин "декларативно" отождествлялся с "определением в markup-е". Так за что ж вы так любите этот xml? и так недолюбливаете язык типа C#-а?
Для разметки UI-контролов xml, наверное, действительно, подходит лучше, но для "программной логики" xml ужасен. Те же триггеры, которые я видел в примерах по WPF, выглядят ужасно громоздко. ... Вот еще вспоминается XSLT — технология на любителя ... .