Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=7333997&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 09:17:30 2016
Кодировка: Windows-1251
WPF databinding - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все | след. страница
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  WPF databinding
      19.03.2008 00:33
 

а что, действительно, в WPF, чтобы вывести имя большими буквами, столько кода надо написсать?
code:
<Application.Resources> <local:StringToUpperCaseConverter x:Key='stringConverter'/> </Application.Resources> <Label Content='{Binding Path=FirstName, Converter={StaticResource stringConverter}}'/> [ValueConversion(typeof (string), typeof (string))] public class StringToUpperCaseConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { string firstName = (string)value; return 'FirstName: ' + firstName.ToUpper(); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } }

(взято отсюда http://flexwinds.wordpress.com/2007/02/15/flex-and-wpf-a-com... )
К тому же все нетипизированно object value.... :crazy:
Да же в ASP.NET-е такое простое преобразование можно выполнить по месту.

И вы говорите, что это упрощает процесс разработки? ;)
Quote:


Только в WPF это не просто полезная фича, примочка к тому что есть, чтобы сделать программирование под Swing проще, а фактически основа на которой построен WPF, что коренным образом влияет на общий дизайн WPF.
http://forum.b.gz.ru/ashowthreaded.php?Cat=&Board=prog&a...






Кстати, объясните мне сакральный смысл слова "декларативно"
Quote:


что позволяет декларативно определять довольно сложный ГУИ




Просто уже от нескольких людей слышал, что, типа, как круто определять что-то декларативно в ASP.NET, в WPF или еще где-то. Насколько я понимаю, в случае ASP.NET и WPF термин "декларативно" отождествлялся с "определением в markup-е". Так за что ж вы так любите этот xml? и так недолюбливаете язык типа C#-а?
Для разметки UI-контролов xml, наверное, действительно, подходит лучше, но для "программной логики" xml ужасен. Те же триггеры, которые я видел в примерах по WPF, выглядят ужасно громоздко. ... Вот еще вспоминается XSLT - технология на любителя ... :smirk: .





not fluffing up the experience with features that will ultimately cause you a headache
Attila
R

Рег.: 18.12.2002
Сообщений: 16118
Из: ...вот именно там.
Рейтинг: 3169
  Re: WPF databinding [re: Shurik]
      19.03.2008 00:52
 

чем тебе XSLT не угодил? :confused:



Кр-ть - с.т.!
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Attila]
      19.03.2008 02:22
2

Quote:

чем тебе XSLT не угодил?



1. Простые вещи часто реализуются нетривиальным кодом.
2. В целом код плохо читаем.



not fluffing up the experience with features that will ultimately cause you a headache
DizzyDen
достаточно добр

Рег.: 04.03.2003
Сообщений: 51427
Из: http://лакалхвост
Рейтинг: 13546
  Re: WPF databinding [re: Shurik]
      19.03.2008 15:45
 

Это все-таки прикольней.



If stateless paradigm is good for your code, why shouldn't it be for your country?
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Shurik]
      19.03.2008 21:48
 

я тут подумал, да, решение Microsoft-а в лоб и не красивое, но проблема, на самом деле, сложнее, чем может показаться на первый взгляд. Дело в том, что UI-контролы должны автоматически обновляться при изменении свойств бизнес-объектов - такую идеологию исповедует WPF databindiing. Делает ли это Flex, я не в курсе
code:
<mx:Label text='FirstName: {_person.firstName.toUpperCase()}'/>

Для автоматического обновления надо из строчки
code:
_person.firstName.toUpperCase()

выцепить "firstName". А если выражение более сложное?
Не знаю насколько приспособлен язык ActionScript (из Flex) для такого, но C# пока на такое не ориентировался. Наверное, можно подумать использовать лямбда-выражения, но они появились в Framework 3.5, а WPF уже входил в Framework 3.0




not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Shurik]
      19.03.2008 21:55
 

Quote:

но они появились в Framework 3.5, а WPF уже входил в Framework 3.0



от Microsoft-а, как от одного поставщика, ждешь целостного согласованного решения. А они как всегда, выпускают экспериментальные версии, и испытывают их на нас. Почему бы не проводить такие эксперименты в каких-нибудь исследовательских лабораториях...



not fluffing up the experience with features that will ultimately cause you a headache
ais
CMXCIX-CXI

Рег.: 18.11.2003
Сообщений: 15489
Рейтинг: 387
  Re: WPF databinding [re: Shurik]
      19.03.2008 21:59
 

В ответ на:

А если выражение более сложное?



Чето я ничего не понимаю, можно конкретный пример где чего не работает?

Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: ais]
      19.03.2008 22:14
 

Quote:

А если выражение более сложное?





Чето я ничего не понимаю, можно конкретный пример где чего не работает?



не понятно все? или не понятно конкретно то, что ты выделил?
Все работает, но в WPF слишком много кода для такого простого случая.



not fluffing up the experience with features that will ultimately cause you a headache
dimich
Pooh-Bah

Рег.: 15.04.2004
Сообщений: 2354
Из: Б-1422лев
Рейтинг: 2
  Re: WPF databinding [re: Shurik]
      19.03.2008 22:33
 

Напиши свою библиотеку конверторов.

Чисто кодом в WPF обходится можно, но часто протые вещи на вид в XAML, делаются сложно кодом.

ais
CMXCIX-CXI

Рег.: 18.11.2003
Сообщений: 15489
Рейтинг: 387
  Re: WPF databinding [re: Shurik]
      19.03.2008 22:59
-1

В ответ на:

или не понятно конкретно то, что ты выделил?



То что выделил.
 
В ответ на:

но в WPF слишком много кода для такого простого случая.
  



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

dimich
Pooh-Bah

Рег.: 15.04.2004
Сообщений: 2354
Из: Б-1422лев
Рейтинг: 2
  Re: WPF databinding [re: ais]
      19.03.2008 23:53
 

правильно, и делай эти конверторы дружелюбными к XAML, чтобы создавать конкретные их экземпляры декларативно

Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: dimich]
      20.03.2008 00:10
 

Quote:


Напиши свою библиотеку конверторов.




Quote:


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




ребят, просто ЛОЛ :grin: , вы что издеваетесь. Будет время напишу, что своя библиотека, к тому же, конвертеров это плохо.



not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: dimich]
      20.03.2008 00:12
 

Quote:

и делай эти конверторы дружелюбными к XAML, чтобы создавать конкретные их экземпляры декларативно



тк объясни что ж вас так притягивает "декларативно" на XAML-е? я там в первом посте спрашивал об этом.



not fluffing up the experience with features that will ultimately cause you a headache
Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Shurik]
      20.03.2008 00:14
 

замечу, что я выступаю не за то, чтобы все кодом на C# писать. Я за разумный баланс. WPF на мой взгляд начала злоупотреблять XMAL-ом.



not fluffing up the experience with features that will ultimately cause you a headache
Orient

Рег.: 18.09.2004
Сообщений: 924
Из: Singapore
Рейтинг: 133
  Re: WPF databinding [re: Shurik]
      20.03.2008 00:15
 

Сделай свойство FirstNameInUpper и биндись к нему


Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Orient]
      20.03.2008 00:17
 

Quote:

Сделай свойство FirstNameInUpper и биндись к нему



да, я вот как раз ехал в метро, и думал над тем, может все "расчеты" надо засовывать в бизнес-объекты. Но пока я не пришол к окончательному выводу, правильно ли это.



not fluffing up the experience with features that will ultimately cause you a headache
Orient

Рег.: 18.09.2004
Сообщений: 924
Из: Singapore
Рейтинг: 133
  Re: WPF databinding [re: Shurik]
      20.03.2008 00:26
 

Да, меня в БО это засовывать тоже не очень прельщает, но пока ничего лучшего не придумал.

Можно сделать класс PersonForGui, который в конструкторе берет исходного Person и выставляет свойства, предназначенные именно для биндинга.
Обернуть таким образом все бизнес-объекты.
Тут могут возникнуть небольшие заморочки с коллекциями.

Вообще, тут бы кодогенерация неплохо пошла, как и для объектов, мапленных на БД и объектов DTO для передачи меж App-доменами. Они часто очень похожие, но все-таки разные

Еще в GUI пользователи <почему-то> не хотят видеть имя колонки в гриде "PersonNameInUpper", а хотят "User name".


Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: Shurik]
      20.03.2008 14:59
 

случайно наткнулся на статью, где автор тоже понимает суть проблемы. в конце он там предлагает анализировать IL код :D
http://www.codeproject.com/KB/WPF/wpfdatabinding.aspx

P.S. в конце страничке оказалось, что автор из России :)



not fluffing up the experience with features that will ultimately cause you a headache
dimich
Pooh-Bah

Рег.: 15.04.2004
Сообщений: 2354
Из: Б-1422лев
Рейтинг: 2
  Re: WPF databinding [re: Orient]
      20.03.2008 17:50
 

Quote:

Да, меня в БО это засовывать тоже не очень прельщает, но пока ничего лучшего не придумал.Можно сделать класс PersonForGui, который в конструкторе берет исходного Person и выставляет свойства, предназначенные именно для биндинга.Обернуть таким образом все бизнес-объекты.Тут могут возникнуть небольшие заморочки с коллекциями.Вообще, тут бы кодогенерация неплохо пошла, как и для объектов, мапленных на БД и объектов DTO для передачи меж App-доменами. Они часто очень похожие, но все-таки разныеЕще в GUI пользователи <почему-то> не хотят видеть имя колонки в гриде "PersonNameInUpper", а хотят "User name".




похоже на Model-View-ViewModel паттерн, который как раз заточен под WPF binding, насколько я понимаю.

Shurik

Рег.: 27.09.2003
Сообщений: 13644
Рейтинг: 787
  Re: WPF databinding [re: dimich]
      20.03.2008 19:35
 

Quote:

Model-View-ViewModel паттерн



да главное придумать название паттерну, и все само сделается :grin: .
Статья малоинформативная, суть можно было изложить в двух преложениях:
XAML то вроде у нас для дизайнеров. Кодеры наваяли бизнес-правила в бизнес- объектах :smirk: И тут неожиданно выясняется, что прога то не работает, оказывается, что еще что-то надо. А что это что-то? И где его место? Не долго думая вводим еще один уровень. Над названием нам тоже лень думать, поэтому остановимся на комбинации слов ViewModel :grin: А уж примеры кода сами напишите...



not fluffing up the experience with features that will ultimately cause you a headache
Страницы: 0 | 20 | показать все | след. страница

Technical >> Development (Archive)

Дополнительная информация
3 зарегистрированных и 1 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы
>>
Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в