powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Топик ненависти к WPF
336 сообщений из 336, показаны все 14 страниц
Топик ненависти к WPF
    #36465307
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Как в сказке, чем дальше - тем страшнее" (с)

Сабж 1: Не для слабонервных

Сабж 2: Почему KeyBinding можно указывать только форме, или как проще всего мутить быстрые клавиши для команд в документах, живущих в TabbedMDI оболочке.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36466796
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К"Как в сказке, чем дальше - тем страшнее" (с)

Сабж 1: Не для слабонервных

Сабж 2: Почему KeyBinding можно указывать только форме, или как проще всего мутить быстрые клавиши для команд в документах, живущих в TabbedMDI оболочке.

1. Подобного маразма,как в этой статье, еще не встречал. Рядом MVVM Part 6: InteractingViewModel / IUserInteracter]ссылка, где показано(к слову, весьма корявый вариант), как ViewModel может контролировать закрытие окна.
2. А зачем нужна привязка команд через код?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36466963
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silverlight1. Подобного маразма,как в этой статье, еще не встречал. Рядом MVVM Part 6: InteractingViewModel / IUserInteracter]ссылка, где показано(к слову, весьма корявый вариант), как ViewModel может контролировать закрытие окна.Причём тут MVVM. Там речь о том, как сделать типовой внешний вид окна диалога. Впрочем, проблема автоматически решится переходом на SL. :-)
Silverlight2. А зачем нужна привязка команд через код?Ну имеем TabbedMDI. Например, кнопка F4 имеет различное значение в зависимости от активного документа. Видимо придётся как-то делать через KeyDown контрола...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36466978
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор Там речь о том, как сделать типовой внешний вид окна диалога
Делается типовая заготовка, при вызове( DialogWindow<View>(ViewModel viewModel) автоматически создается view c типом View и присваивается контексту, viewModel отвечает за валидацию и закрытие окна. Все стандартно, в общем варианте и без всяких мультиков с хаками.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36466980
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А MVVM при том, что без него все будет через одно место.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36467106
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Silverlightавтор Там речь о том, как сделать типовой внешний вид окна диалога
Делается типовая заготовка, при вызове( DialogWindow<View>(ViewModel viewModel) автоматически создается view c типом View и присваивается контексту, viewModel отвечает за валидацию и закрытие окна. Все стандартно, в общем варианте и без всяких мультиков с хаками.Да это всё понятно. Вопрос в том, как сделать "типовую заготовку" окна, в которую будет вставляться контрол с контентом.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36467566
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SilverlightДелается типовая заготовка, при вызове( DialogWindow<View>(ViewModel viewModel) автоматически создается view c типом View и присваивается контексту, viewModel отвечает за валидацию и закрытие окна .
Если уж DialogWindow, то может он и поведение к View подключит в соответствии со своим названием - нафига vm этим загружать?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36471818
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где взять исходники Microsoft.Practices.ServiceLocation.dll ?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36471913
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, нашёл ...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36472259
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman S. GolubinSilverlightДелается типовая заготовка, при вызове( DialogWindow<View>(ViewModel viewModel) автоматически создается view c типом View и присваивается контексту, viewModel отвечает за валидацию и закрытие окна .
Если уж DialogWindow, то может он и поведение к View подключит в соответствии со своим названием - нафига vm этим загружать?
Показан упрощенный и более понятный вариант(vm там ничем не загружается).
У меня ShowDialog(ViewModel viewModel)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558069
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чё, в Silverlight никак не сделать человеческий ShowDialog с циклом обработки сообщений внутри него?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558446
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

так :)
кто же принципы десктопа применяет в вебе?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558575
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558578
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В противном случае, зачем тогда сделали контрол, имитирующий окно (модальное в том числе).
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558651
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

чтобы переманить тебя, сделать лояльным :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558745
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dispatcher.Run() в Silverlight есть? И где вообще msdn по Silverlight?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36558747
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK... сделать лояльным :)Бесполезно.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36560808
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36562046
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К Нупестец Ухаха...
Извиняюсь, что смешного по ссылке? То что CTP не до конца оптимизирован?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36562287
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinАлексей К Нупестец Ухаха...
Извиняюсь, что смешного по ссылке? То что CTP не до конца оптимизирован?А то, что ListCollectionView на сегодняшний день работает как описано в ссылке. Интересно, в .Net 4 это изменится? Сомневаюсь.

Чё, трудно было через emit сделать? Там надо-то всего лиш заэмитить доступ с значениям свойств/полей в реализации PropertyDescriptor. Трудно переделать существующий? Ну добавить новый какой-нибудь EmitTypeDescriptor. В чём проблема?

Видимо опять придётся брать EditableList из BLToolkit.

ЗЫ: Детский сад...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36562787
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,
и даже после этого
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36562794
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это был вопрос.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36563072
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Писать компараторы сущностей вручную - это "не наш метод" (с)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36563114
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, лучше взять стороннюю приладу. не, не мой выбор.
попользуй тогда уж девок, хотя и за денежку, неплохо сделали. мне понравилось.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36563219
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Progaага, лучше взять стороннюю приладу.А выбора не остаётся. Причём, эта "сторонняя прилада" отлично работает. Это как раз тот случай, когда писали люди для людей, а не какие-то индусы-теоретики для непонятно кого
Progaпопользуй тогда уж девок, хотя и за денежку, неплохо сделали. мне понравилось.Я пока рассматриваю "халявные" способы.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36564028
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SL грид от девок есть фриварная версия
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36564286
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пока про WPF. Да и не в гриде тут дело.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570407
Я не понял, а что, в WPF полная задница с наследованием окон Window? Пестец, от чего ушли и к чему пришли
P.S. Гавнокод на юзерконтролах не предлагать.
P.S2. Требуется "человеческое" наследование форм, как это сделано во всех нормальных языках программирования и технологиях, в том числе как и винформзе.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570474
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куропаточка,

тебе просто надо оставаться в сфере winforms.
wpf не для тебя.
поэтому у тебя сразу и ничего не сошлось в голове :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570511
AlexeiK
Бабуль, а по делу что, сфинктер сжался?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570515
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куропаточка,

по делу:
просто твой мозг еще не ушел от winforms
так что переходить на wpf еще не время
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570524
AlexeiKКуропаточка,

по делу:
просто твой мозг еще не ушел от winforms
так что переходить на wpf еще не время

Опять заднюю включаешь, тупик?

То есть наследование - это зло, я правильно понял? И WPF - это "нечто", где наследование форм не нужно по определению?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570530
А ваще мне нравится твоя дятельная логика, сынок :)

- Вышел новый автомобиль с багами и недоработками!
- Ёпт, а что ж баги-то и недоработки в нем?
- "Просто твой мозг еще не ушел от предыдущей модели, так что переходить на новую еще не время"
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570559
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куропаточка,

не не.
ты заметь, то что ты додумал, я этого не говорил.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570563
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куропаточка- Вышел новый автомобиль с багами и недоработками!
)))
так это легко переиначить:
- Вышло новое средство передвижение (автомобиль)!
- (ковбои) Какое-то оно неправильное - шпоры некуда втыкать (неправильная лошадь)!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570581
AlexeiKКуропаточка,

не не.
ты заметь, то что ты додумал, я этого не говорил.

Эээ, так не честно засовывать язык в одно место... Продолжай дальше говорить про "правильность" WPF в разрезе того, что наследование форм - это "плохо".

Ась? :)

LRКуропаточка- Вышел новый автомобиль с багами и недоработками!
)))
так это легко переиначить:
- Вышло новое средство передвижение (автомобиль)!
- (ковбои) Какое-то оно неправильное - шпоры некуда втыкать (неправильная лошадь)!

Чтобы переиначивать - нужны аргументы. У тебя есть аргументы того, что наследование форм - это плохо? :))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570624
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КуропаточкаЧтобы переиначивать - нужны аргументы. У тебя есть аргументы того, что наследование форм - это плохо? :))
а разве я говорил, что лошадь - это плохо? вовсе нет, инструмент есть инструмент, если умеешь пользоваться - споры вроде как и не нужны....
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570645
LRКуропаточкаЧтобы переиначивать - нужны аргументы. У тебя есть аргументы того, что наследование форм - это плохо? :))
а разве я говорил, что лошадь - это плохо? вовсе нет, инструмент есть инструмент, если умеешь пользоваться - споры вроде как и не нужны....
Не нужно разделять вин разработку на лошадей и автомобилей, тем более одной и той же платформы. Назови мне хоть один современный популярный язык программирования, который запрещает это делать?
А покрывать недоработку в WPF по данному вопросу (как и массу других недоработок в силу спешности выпуска релиза) - это самоутопия :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570672
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"МСУ",

да ты навязываешь свои выдуммки.
тебе уже сказали, что тебе придется ездить на лошади в силу твоего winforms-мышления.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570680
AlexeiK"МСУ",

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

Ты нарочно под дурачка-попрыгунчика косишь?
Десятый раз спрашиваю : наследование форм - это не правильно?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36570969
Я не понял, мальчики, чего закисли?

AlexeiK, сынок, где твои буквы по проблеме наследования?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571232
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Куропаточка, зачем киснуть? Это у тебя проблемы с наследованием, у нас их нет
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571274
SilverlightКуропаточка, зачем киснуть? Это у тебя проблемы с наследованием, у нас их нет

Ты уверен, милок? :)

Вот тебе хук с правой под дышло, Севушко:

http://connect.microsoft.com/VisualStudio/feedback/details/289715/wpf-xaml-visual-inheritance
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571284
Порадовал жалостный пост от некого zaki786:

zaki786Posted by zaki786 on 05.04.2010 at 20:40
Visual Inheritance worked fine till Windows Forms... Please don't stop it in WPF.

Thanks



P.S. Мальчики, что еще умного расскажете про "отточенную" до нормального выхлопа технологию WPF?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571343
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Куропаточка,
ты слишком просто в своей тактике.

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

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

и ты такой выбежал в белых перьях , на ринг, и пытаешься кидать яйца в непонятно кого.
ты тут один .
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571374
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КуропаточкаSilverlightКуропаточка, зачем киснуть? Это у тебя проблемы с наследованием, у нас их нет

Ты уверен, милок? :)

Вот тебе хук с правой под дышло, Севушко:

http://connect.microsoft.com/VisualStudio/feedback/details/289715/wpf-xaml-visual-inheritance
Ребята сами наступают себе на одно место, а потом пытаются бежать.
Потому его и нет, мсу, чтобы не было возможности некоторым отстрелить себе ногу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571469
AlexeiKпридумываешь вопросы сам. и заставляешь других отвечать на них , через хамство .
Пипец, я тебя фигею :)

=>

AlexeiKтебе просто надо оставаться в сфере winforms.
wpf не для тебя.
поэтому у тебя сразу и ничего не сошлось в голове :)

AlexeiKпросто твой мозг еще не ушел от winforms
так что переходить на wpf еще не время

AlexeiKтебе придется ездить на лошади в силу твоего winforms-мышления.

Так что там про "хамство"-то?

И ещё. Если не в теме - лучше помолчи.

SilverlightРебята сами наступают себе на одно место, а потом пытаются бежать.
Опять за других отвечаешь?
Ответь на вопрос: наследование окон - это плохая практика? Только ответь на вопрос, а не виляй из стороны в сторону.

P.S. Реально детсад - ньюдженерейшен ламеры доказывают, что наследование - это плохо (так как криворукие врф'о-строители недоклепали эту "фичу"), цирк
P.S2. Севушко, ты продолжаешь жечь напалмиком...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571537
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MCу, а почему Куропаточка, а не Зайчик или Кроличек? Очень трогательно, мило и пушисто. Решил сменить имидж или опять забанили?

ЗЫ Вся идеология xaml построена на композиции, за счет этого достигается гибкость и не нужно на каждый чих создавать новые контролы, как в WinForms. Если тебе нравится этот мазахизм, то, как тебе уже советывали, оставайся на формачках.
Если не понимаешь, как можно обойтись без наследования, то WPF здесь не причем.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571550
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF

МакДональд про SL3 книжку выпустил. Уже перевели. Что-то на англ. не нашёл в своих закромах.
Кто-нибудь видел уже?
Высоковероятно что УГ, конечно, но всё же...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571617
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше читать буквари по WPF. По SL все написаны под копирку, проку от них мало.
ЗЫ Этот тоже не помню
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571879
Сыначка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SilverlightЗЫ Вся идеология xaml построена на композиции, за счет этого достигается гибкость и не нужно на каждый чих создавать новые контролы, как в WinForms. Если тебе нравится этот мазахизм, то, как тебе уже советывали, оставайся на формачках.
Если не понимаешь, как можно обойтись без наследования, то WPF здесь не причем.
Чувак, какая нах композиция, тебя о наследовании, как об основопологающем ките ООП, спрашивают. Чё дурку врубаешь?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36571991
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredOFF
МакДональд ...
Да, короче Макдональд опять капусту рубит.
Нашёл в сети англ. версию.
Вот сравнение содержания 2-х его книг.
Pro Silverlight 2 in C# 2008 уже куплена на русском. Хватит.

Pro Silverlight 2 in C# 2008CHAPTER 1 Introducing Silverlight
CHAPTER 2 XAML
CHAPTER 3 Layout
CHAPTER 4 Dependency Properties and Routed Events
CHAPTER 5 Elements
CHAPTER 6 The Application Model
CHAPTER 7 Shapes and Geometries
CHAPTER 8 Brushes and Transforms
CHAPTER 9 Animation
CHAPTER 10 Sound, Video, and Deep Zoom.
CHAPTER 11 Styles, Templates, and Custom Controls
CHAPTER 12 Browser Integration
CHAPTER 13 ASP.NET and Web Services
CHAPTER 14 Data Binding
CHAPTER 15 Isolated Storage
CHAPTER 16 Multithreading
CHAPTER 17 Networking
Pro Silverlight 3 in C#Chapter 1: Introducing Silverlight
Chapter 2: XAML
Chapter 3: Layout
Chapter 4:Dependency Properties and Routed Events
Chapter 5: Elements
Chapter 6: The Application Model
Chapter 7: Navigation
Chapter 8: Shapes and Geometries
Chapter 9: Brushes, Transforms,and Bitmaps
Chapter 10: Animation
Chapter 11: Sound, Video, and Deep Zoom
Chapter 12: Styles and Behaviors
Chapter 13: Templates and Custom Controls
Chapter 14: Browser Integration.
Chapter 15: ASP.NET Web Services.
Chapter 16: Data Binding
Chapter 17: Data Controls
Chapter 18: Isolated Storage.
Chapter 19: Multithreading
Chapter 20: Networking
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36572033
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята нашли золотую жилу - каждые 8мес новая книжка. 13 выйдет Sl 4.0, появятся новые клоны.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36578113
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ComboBox, а возможно и сам Selector... При присваивании значения свойству ItemsSource, SelectedValue автоматически присваивается null. Как следствие, null присваивается соответствующему свойству сущности через датабиндинг. Это не совсем то совсем не то что хотелось бы... Интересно, что же помешало автору сбрасывать SelectedValue только в случае, если в новом наборе данных не найдена соответствующая запись.

Вспомнилась песня "Я убью тебя, лодочник..."
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36579724
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, получился такой костыль, вроде работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
namespace SspMain
{
    public class ComboBox : System.Windows.Controls.ComboBox
    {
        static ComboBox()
        {
            DefaultStyleKeyProperty.OverrideMetadata(
                typeof(SspMain.ComboBox),
                new FrameworkPropertyMetadata(typeof(SspMain.ComboBox))
            );

            var itemsSourcePropertyMetadata = new FrameworkPropertyMetadata();

            itemsSourcePropertyMetadata.CoerceValueCallback += (s, e) =>
                ((SspMain.ComboBox)s).CoerceItemsSource(e);

            itemsSourcePropertyMetadata.PropertyChangedCallback += (s, e) =>
                ((SspMain.ComboBox)s).ItemsSourceChanged();

            ItemsSourceProperty.OverrideMetadata(typeof(SspMain.ComboBox), itemsSourcePropertyMetadata);
        }

        #region Костыль для SelectedValue

        object _pSelectedValue;

        object CoerceItemsSource(object value)
        {
            _pSelectedValue = SelectedValue;
            return value;
        }

        void ItemsSourceChanged()
        {
            if (_pSelectedValue != null)
                SelectedValue = _pSelectedValue;
        }

        #endregion
    }
}
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36588977
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёш, зачем такие бубны? Достаточно на проблему глянуть под другим углом.
Например, биндим модель к контексту, в модели предоставляем проперть, к которой декларативно будет связан наш SelectedValue.

Код: plaintext
1.
2.
3.
<ComboBox x:Name="ComboBox1" ItemsSource="{Binding PhonebookEntries}" 
        DisplayMemberPath="Name" 
        SelectedValuePath="Name" 
        SelectedValue="{Binding PhonebookEntry}" />

Код: plaintext
DataContext = new ConnectionViewModel("test2");

Модель
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public class ConnectionViewModel : INotifyPropertyChanged
{
    public ConnectionViewModel(string defaultPhoneBook)
    {
        IList<PhoneBookEntry> list = new List<PhoneBookEntry>();
        list.Add(new PhoneBookEntry("test"));
        list.Add(new PhoneBookEntry("test2"));
        list.Add(new PhoneBookEntry("test3"));
        _phonebookEntries = new CollectionView(list);
        PhonebookEntry = defaultPhoneBook;
    }
    private readonly CollectionView _phonebookEntries;
    private string _phonebookEntry;

    public CollectionView PhonebookEntries
    {
        get { return _phonebookEntries; }
    }

    public string PhonebookEntry
    {
        get { return _phonebookEntry; }
        set
        {
            if (_phonebookEntry == value) return;
            _phonebookEntry = value;
            OnPropertyChanged("PhonebookEntry");
        }
    }
    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
    public event PropertyChangedEventHandler PropertyChanged;
}


Тем самым, мы просто проинициализировали конструктор модели значением по умолчанию.
P.S. Этим значением может служить, как вариант, первый элемент коллекции для комбобокса.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589132
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаНужно иметь возможность присваивания ItemsSource не только перед присваиванием SelectedValue, но и после этого. Т. е. в произвольном порядке. Если вынести из конструктора код:
Код: plaintext
1.
2.
3.
    public UpdateData()
    {
        PhonebookEntries = _myService.GetPhoneBookEntries();
    }
При вызове этого метода, PhonebookEntry (к которому привязано SelectedValue) будет присвоено null. При определённых условиях это может стать проблемой на пустом месте.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589137
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поторопился с предыдущим постом, не читайте его.

Почему-то не хочется выносить этот код в "маленькую" вьюмодельку чисто для комбобокса.

На мой взгляд, это может накладывать некоторые ограничения на прикладной код и делать его менее удобным. Впрочем, позже ещё об этом подумаю, спасибо. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589171
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Комбобоксы сами по себе не живут. Они должны изменять значение, лучше всего это делать c помощью ViewModel.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589214
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SilverlightКомбобоксы сами по себе не живут. Они должны изменять значение, лучше всего это делать c помощью ViewModel.О чём и речь. Просто хочется, чтобы это выглядело примерно так, и не было дополнительных ограничений по порядку присваивания свойств Product и Categories.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class ProductEditViewModel
{
    public Db.Products Product { get; set; }
    public IEnumerable<Db.Categories> Categories { get; set; }

    // Реализацию INotifyPropertyChanged опускаю
}

<ComboBox ItemsSource="{Binding Categories}"
                  SelectedValue="{Binding Product.CategoryID}"
                  SelectedValuePath="CategoryID"
                  DisplayMemberPath="CategoryName"/>
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589281
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПочему-то не хочется выносить этот код в "маленькую" вьюмодельку чисто для комбобокса.
Выносить вьюмодельку чисто для комбобокса не нужно. У Вас должна быть вью модель полностью для всего представления. Типа паттерны, веяния моды и современности :)

Алексей КНа мой взгляд, это может накладывать некоторые ограничения на прикладной код и делать его менее удобным. Впрочем, позже ещё об этом подумаю, спасибо. :-)
Тем самым Вы нагло упаковали MVVM в печь :) А зря
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589371
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаАлексей КПочему-то не хочется выносить этот код в "маленькую" вьюмодельку чисто для комбобокса.
Выносить вьюмодельку чисто для комбобокса не нужно. У Вас должна быть вью модель полностью для всего представления. Типа паттерны, веяния моды и современности :)Тем более, выносить "это" в прикладной код глупо.

МусичкаАлексей КНа мой взгляд, это может накладывать некоторые ограничения на прикладной код и делать его менее удобным. Впрочем, позже ещё об этом подумаю, спасибо. :-)
Тем самым Вы нагло упаковали MVVM в печь :) А зря Почему? Посмотрите на мой предыдущий пост, там всё "в рамках концепции".

ЗЫ: Тут вопрос не "как это делать", а "как это делать удобнее".
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589403
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТем более, выносить "это" в прикладной код глупо.
Другими словами, разделять представление и его логику - глупый подход?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589418
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторАлексей К,


ЗЫ: Тут вопрос не "как это делать", а "как это делать удобнее".

МСУ учись, так думать. это двигатель прогресса.
А то уже утомили мозговые коробки ,которые в цикле for each перебирают шаблоны,которые им написали дяди в своих книжках.

это как зомбоящик, который медленно приводит к тому, что человек перестает иметь свою точку зрения на события вокруг. тут такое же,только в профиль. поэтому и развития никакого нету в ИС системах.

а то аж смешно когда видишь, недовольных, которые заметил, что ктото сошел с рельс MVVM.
обида за себя видимо. за то ,что сходить с рельс не всем дано.
я даже бывает радуюсь, что так много народу сидят на всяких рельсах типа mvvm и других. для других больше места остается под креатив.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589449
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаАлексей КТем более, выносить "это" в прикладной код глупо.
Другими словами, разделять представление и его логику - глупый подход?Скажем так: текущая реализация представления мешает реализовать логику модели. Отсюда вывод - нужно изменить представление.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589482
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСкажем так: текущая реализация представления мешает реализовать логику модели. Отсюда вывод - нужно изменить представление.
То есть, "косячная" реализация представления - это, значит, не глупый подход, а человеческое отделение представления от его логики - глупый подход? Я правильно понимаю?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589536
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаТо есть, "косячная" реализация представления - это, значит, не глупый подходЯ чтоли комбобокс писал?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589613
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМусичкаТо есть, "косячная" реализация представления - это, значит, не глупый подходЯ чтоли комбобокс писал?
Комбобокс - это не представление, а элемент представления.
Хотите нормально взаимодействовать с моделью и представлением? Пишите ViewModel.
P.S. И комбобокс тут не при чём.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589616
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаКомбобокс - это не представление, а элемент представления.Это что-то меняет?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589643
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМусичкаКомбобокс - это не представление, а элемент представления.Это что-то меняет?

- Автомобиль - это водянистая серая жижа с добавками азотной кислоты, имеющая специфический запах тлеющей бумаги
- Ты чё? Автомобиль - это тупо средство передвижения, с мотором, рулём, дверьми и т.д.
- Это что-то меняет?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589681
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут можно вечно рассуждать о вечном. Приведите пример прикладного кода аналогичный этому - сравним.

То что Вы предлагали в начале обсуждения не решает поставленную задачу. По вашему примеру я могу лиш предполагать, как бы вы её решили. Возможно я ошибаюсь.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589849
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПриведите пример прикладного кода аналогичный этому - сравним.
Я же привёл уже на ViewModel , что не устроило-то?

[quot Алексей К]То что Вы предлагали в начале обсуждения не решает поставленную задачу. По вашему примеру я могу лиш предполагать, как бы вы её решили. Возможно я ошибаюсь.
Как не решает? Сменили источник, комбобокс автоматически подхватит забайденный SelectedValue к проперти PhonebookEntry, которая в свою очередь проинициализировалась в конструкторе ViewModel. Этаким способом я как-бы "обманул" комбобокс, подпихнув под него конкретное значение.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589851
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПриведите пример прикладного кода аналогичный этому - сравним.
Я же привёл уже на ViewModel , что не устроило-то?

Алексей КТо что Вы предлагали в начале обсуждения не решает поставленную задачу. По вашему примеру я могу лиш предполагать, как бы вы её решили. Возможно я ошибаюсь.
Как не решает? Сменили источник, комбобокс автоматически подхватит забайденный SelectedValue к проперти PhonebookEntry, которая в свою очередь проинициализировалась в конструкторе ViewModel. Этаким способом я как-бы "обманул" комбобокс, подпихнув под него конкретное значение.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36589983
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаКак не решает? Сменили источник, комбобокс автоматически подхватит забайденный SelectedValue к проперти PhonebookEntry, которая в свою очередь проинициализировалась в конструкторе ViewModel. Этаким способом я как-бы "обманул" комбобокс, подпихнув под него конкретное значение.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class ProductEditViewModel
{
    public Db.Products Product { get; set; }
    
    IEnumerable<Db.Categories> _categories;
    public IEnumerable<Db.Categories> Categories 
    { 
        get { return _categories; }
        set
        {
            int? priorCategoryID = null;
            if (Product != null)
                priorCategoryID = Product.CategoryID;

            _categories = value;
            OnPropertyChanged("Categories");

            if (priorCategoryID.HasValue)
                Product.CategoryID = priorCategoryID;
        }
    }
}

Так? И это писать для всех 327 комбобоксов?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36590038
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТак? И это писать для всех 327 комбобоксов?
У Вас на окне 327 комбобоксов?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36590088
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз. То, что Вы написали - это ViewModel. ViewModel рисуется не для комбобоксов, а для всего представления. То есть, выведение проперти Categories для байдинга SelectedValue - это всего-лишь маленькая крупица того, что нужно написать для представления :)
P.S. Вообще сам по себе MVVM предполагает наличие "многабукаф" в проекте. Ибо.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36590283
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаАлексей КТак? И это писать для всех 327 комбобоксов?
У Вас на окне 327 комбобоксов?Ну окон-то много.

МусичкаЕще раз. То, что Вы написали - это ViewModel. ViewModel рисуется не для комбобоксов, а для всего представления. То есть, выведение проперти Categories для байдинга SelectedValue - это всего-лишь маленькая крупица того, что нужно написать для представления :)Да.

МусичкаP.S. Вообще сам по себе MVVM предполагает наличие "многабукаф" в проекте. Ибо.Это не так. Наверное.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36590407
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ Вас на окне 327 комбобоксов?Ну окон-то много.[/quot]
Вопрос из разряда нужности подсчета кол-во строк кода в проекте? Вы ж, вроде, уже взрослый дядька, а всё туда же )

Алексей КДа.
Тогда нихрена не понимаю. Сначала Вы мне задвигаете про то, что нах писать маленькую "вьюмодельку" для комбобокса, теперь Вы соглашаетесь, что "вьюмоделька" пишется не для комбобокса, а для всего представления. То ли Вы запутались, что-ли я далбаёп
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36590409
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу окон-то много.
Вопрос из разряда нужности подсчета кол-во строк кода в проекте? Вы ж, вроде, уже взрослый дядька, а всё туда же )

Алексей КДа.
Тогда нихрена не понимаю. Сначала Вы мне задвигаете про то, что нах писать маленькую "вьюмодельку" для комбобокса, теперь Вы соглашаетесь, что "вьюмоделька" пишется не для комбобокса, а для всего представления. То ли Вы запутались, что-ли я далбаёп
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36591451
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаТогда нихрена не понимаю. Сначала Вы мне задвигаете про то, что нах писать маленькую "вьюмодельку" для комбобокса, теперь Вы соглашаетесь, что "вьюмоделька" пишется не для комбобокса, а для всего представленияВ примере показана часть вьюмодели, с которой связан один комбобокс.

МусичкаЕщё раз... Небольшое шаманство с комбобоксом избавляет от маразма в прикладном коде. Я об этом.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36591504
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В продолжение темы ненависти...

Свежеустановленная VS2010 Professional + .Net4

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Skin.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/PresentationFramework.Aero;V4.0.0.0;31bf3856ad364e35;component/themes/aero.normalcolor.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

App.xaml:

<Application x:Class="SkinTest.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                
                <!-- Почему вот так работает?
                <ResourceDictionary Source="/PresentationFramework.Aero;V4.0.0.0;31bf3856ad364e35;component/themes/aero.normalcolor.xaml"/>-->
                
                <!-- А вот так не работает? -->
                <ResourceDictionary Source="Skin.xaml"/>
                
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

В .Net 3.5 это работало!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36621183
Фотография Мусичка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задаюсь таким вопросом по поводу сильвера и безопасности:

Имеем: клиентский *.xap, представляющий из себя тупо *.zip с необходимыми ресурсами, который скармливается браузеру.

Вопрос: возможно ли этот xap как-то перехватить, отдизассемблить сборки? Кто в теме?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36621360
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мусичка,

что значит "перехватить"? можно просто-напросто скачать (путь указан в параметрах хтмльного объекта хостинга, <param name="source" value="ClientBin/myslapp.xap"/>) - указывай в адресной строке браузера и закачивай как обычный .zip
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36621396
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR
Где здесь информация о xap?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36621729
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде здесь информация о xap?
там нет .xap, там есть .xaml ("interface.xaml"), иформацию смотри в файле CreateSilverlight.js и Silverlight.js (которые, кстати, поставлялись еще с sl sdk 1.0)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36621883
Silverlight
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LRМусичка,

что значит "перехватить"? можно просто-напросто скачать (путь указан в параметрах хтмльного объекта хостинга, <param name="source" value="ClientBin/myslapp.xap"/>) - указывай в адресной строке браузера и закачивай как обычный .zip
Легко. Для Reflector'a есть плагины, кроме того, все замечательно видно Silverlight Spy.
Единственный, но не 100% вариант - самому подгружать зашифрованные сборки и obfuscator, если это так критично. Прежде всего нужно защищать соединение и сервер.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36622078
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRМСУГде здесь информация о xap?
там нет .xap, там есть .xaml ("interface.xaml"), иформацию смотри в файле CreateSilverlight.js и Silverlight.js (которые, кстати, поставлялись еще с sl sdk 1.0)
Согласен. Но не факт, что нету xap'а - чем смотрели?
Проверял через Reflector.SilverlightLoader.dll (04.03.2008), он вообще не умеет с xap'ом работать.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36622109
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУLRМСУГде здесь информация о xap?
там нет .xap, там есть .xaml ("interface.xaml"), иформацию смотри в файле CreateSilverlight.js и Silverlight.js (которые, кстати, поставлялись еще с sl sdk 1.0)
Согласен. Но не факт, что нету xap'а - чем смотрели?
Проверял через Reflector.SilverlightLoader.dll (04.03.2008), он вообще не умеет с xap'ом работать.
смотрел блокнотом)) там используется JavaScript API, SL1
msdnThe JavaScript API is the model that was available in Silverlight version 1.0, and is retained for backward compatibility and to enable particular scenarios.

In the JavaScript API, the Silverlight plug-in loads a single XAML page instead of an application package. This XAML can include URI references to server-side resources, such as images and videos. The Silverlight plug-in uses the XAML to create an object tree that you can programmatically manipulate using JavaScript in the host HTML page.

The JavaScript API does not provide an application model that is capable of supporting complex applications with internal navigation. However, it does enable scenarios for which the managed API is too cumbersome, such as splash screens. You can also implement basic navigation by loading new XAML pages into the Silverlight plug-in or by loading new Web pages into the browser.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36658278
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visual Studio 2010 + FW4. Включена родная тема Aero. Мутим Popup у которого StaysOpen=False. На нём размещаем DataGrid. В гриде тыкаем сортировку по колонке, и пока фокус находится в заголовке колонки грида - Popup отказывается закрываться при тычке мышью вне него.

Вспомнилось:

- Листья падают с ясени, никуясебе,
- Посмотрел в окно, и действительно - акуительно!

ЗЫ: Не баньте меня пожалуйста за ненормативную лексику. Я больше не буду. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36660370
eJack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаЕще раз. То, что Вы написали - это ViewModel. ViewModel рисуется не для комбобоксов, а для всего представления. То есть, выведение проперти Categories для байдинга SelectedValue - это всего-лишь маленькая крупица того, что нужно написать для представления :)
P.S. Вообще сам по себе MVVM предполагает наличие "многабукаф" в проекте. Ибо.

Насколько я понимаю, сами по себе Шаблоны проектирования (паттерны) это всего лишь рекомендации и не предпологают тупое их копирование, если для упрощения необходимо дописать "костыль" или еще что то - то милости просим!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36661131
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offАлексей КЗЫ: Не баньте меня пожалуйста за ненормативную лексику.
Эко Вас заносит на поворотах, Лёша )
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36662190
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭко Вас заносит на поворотах, Лёша )Ну а какие ещё эмоции должна вызывать описанная ситуация? :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36665635
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу а какие ещё эмоции должна вызывать описанная ситуация? :-))
рождённый ползать - летать не будет.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36665818
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилрождённый ползать - летать не будет.Полетит. Он просто не может не полететь. WinForms запустили, и "это" запустим.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36665886
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что и куда собираемся запускать с нереализованной Memory Leak?
P.S. Ракеты взлетают, но иногда падают. Утечка памяти - это беспощадное зло.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36666621
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧто и куда собираемся запускать с нереализованной Memory Leak?
P.S. Ракеты взлетают, но иногда падают. Утечка памяти - это беспощадное зло.Неужели "это" так сложно вставить в своей реализации ICommand, если таковая понадобится?

Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
    public class WeakList<T>
        where T : class
    {
        List<WeakReference> _weakList = new List<WeakReference>();

        public void Add(T value)
        {
            _weakList.Add(new WeakReference(value));
        }

        public void Remove(T value)
        {
            for (int i = _weakList.Count - 1; i >= 0; i--)
            {
                var item = (T)_weakList[i].Target;
                if (item == null || EqualityComparer<T>.Default.Equals(item, value))
                    _weakList.RemoveAt(i);
            }
        }

        public T[] Items
        {
            get
            {
                var result = new List<T>(_weakList.Count);
                for (int i = _weakList.Count - 1; i >= 0; i--)
                {
                    var item = (T)_weakList[i].Target;
                    if (item != null)
                        result.Add(item);
                    else
                        _weakList.RemoveAt(i);
                }
                result.Reverse();
                return result.ToArray();
            }
        }
    }

    public class WeakEventHandler : WeakList<EventHandler>
    {
        public void Invoke(object sender, EventArgs e)
        {
            foreach (var handler in Items)
                handler(sender, e);
        }
    }

    public class WeakAction : WeakList<Action>
    {
        public void Invoke()
        {
            foreach (var handler in Items)
                handler();
        }
    }
Не нужно офтопить в топике ненависти надуманными проблемами! :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36666734
гнидыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заработала галерея севы
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36666842
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУЧто и куда собираемся запускать с нереализованной Memory Leak?
P.S. Ракеты взлетают, но иногда падают. Утечка памяти - это беспощадное зло.Неужели "это" так сложно вставить в своей реализации ICommand, если таковая понадобится?

+
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
    public class WeakList<T>
        where T : class
    {
        List<WeakReference> _weakList = new List<WeakReference>();

        public void Add(T value)
        {
            _weakList.Add(new WeakReference(value));
        }

        public void Remove(T value)
        {
            for (int i = _weakList.Count - 1; i >= 0; i--)
            {
                var item = (T)_weakList[i].Target;
                if (item == null || EqualityComparer<T>.Default.Equals(item, value))
                    _weakList.RemoveAt(i);
            }
        }

        public T[] Items
        {
            get
            {
                var result = new List<T>(_weakList.Count);
                for (int i = _weakList.Count - 1; i >= 0; i--)
                {
                    var item = (T)_weakList[i].Target;
                    if (item != null)
                        result.Add(item);
                    else
                        _weakList.RemoveAt(i);
                }
                result.Reverse();
                return result.ToArray();
            }
        }
    }

    public class WeakEventHandler : WeakList<EventHandler>
    {
        public void Invoke(object sender, EventArgs e)
        {
            foreach (var handler in Items)
                handler(sender, e);
        }
    }

    public class WeakAction : WeakList<Action>
    {
        public void Invoke()
        {
            foreach (var handler in Items)
                handler();
        }
    }
Не нужно офтопить в топике ненависти надуманными проблемами! :-))

А где WeakEventManager, где StartListening и StopListening? Где ловля евентов? Где EventManager.RegisterClassHandler? Куда подевалсо наш IWeakEventListener и реализация ReceiveWeakEvent (бутон или что-там у нас)?

P.S. Лёша, что за говнокодец Вы мне дали? :)
P.S2. Я жду полноценных WeakEventManager + IWeakEventListener, а не гуано на лопате :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36667521
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА где WeakEventManager, где StartListening и StopListening? Где ловля евентов? Где EventManager.RegisterClassHandler? Куда подевалсо наш IWeakEventListener и реализация ReceiveWeakEvent (бутон или что-там у нас)?А накойхер (с) мне это надо? Мне достаточно этого:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
WeakAction _myEvent = new WeakAction();
public event Action MyEvent
{
    add { _myEvent.Add(value); }
    remove { _myEvent.Remove(value): }
}

protected virtual void OnMyEvent()
{
    _myEvent.Invoke();
}

Это решает описанную проблему.

МСУP.S. Лёша, что за говнокодец Вы мне дали? :)Но но!!! Это часть новейшего WPF/SL фреймворка приложений будущего!!! :-)

МСУP.S2. Я жду полноценных WeakEventManager + IWeakEventListener, а не гуано на лопате :)Тут могу только посоветовать сходить к гуглу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36667693
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то я затупил. Как-то так надо делать. Завтра проверю.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668226
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МусичкаЕще раз. То, что Вы написали - это ViewModel. ViewModel рисуется не для комбобоксов, а для всего представления. То есть, выведение проперти Categories для байдинга SelectedValue - это всего-лишь маленькая крупица того, что нужно написать для представления :)
P.S. Вообще сам по себе MVVM предполагает наличие "многабукаф" в проекте. Ибо.
Очередной маразм. Никто в здравом уме не помещает в ViewModel справочники.Их создают непосредственно в xaml, а viewmodel не перегружают ненужными деталями. И путей для этого много:
- конвертер
- провайдеры данных
- через расширения xaml возможны любые варианты.Например,самый вменяемый-через DI контейнеры или фабрики
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668259
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому интересно - вот правильный код.

Правильный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
    class DelegateWeakReference
    {
        Type _delegateType;
        WeakReference _targetRef;
        MethodInfo _method;

        public DelegateWeakReference(Delegate value)
        {
            _delegateType = value.GetType();
            _method = value.Method;
            if (_method.IsStatic == false)
                _targetRef = new WeakReference(value.Target);
        }

        object Target
        {
            get { return _targetRef != null ? _targetRef.Target : null; }
        }

        public Delegate TryGetDelegate()
        {
            var target = Target;

            if (GetIsTargetCollected(target))
                return null;

            if (_method.IsStatic)
                return Delegate.CreateDelegate(_delegateType, _method);

            return Delegate.CreateDelegate(_delegateType, target, _method);
        }

        public bool IsTargetCollected
        {
            get { return GetIsTargetCollected(Target); }
        }

        bool GetIsTargetCollected(object target)
        {
            return target == null && _method.IsStatic == false;
        }

        public bool Equals(Delegate value)
        {
            return Target == value.Target && _method == value.Method;
        }
    }

    class WeakDelegate
    {
        object _lockObj = new object();
        List<DelegateWeakReference> _weakHandlers = new List<DelegateWeakReference>();

        public void Add(Delegate handler)
        {
            lock (_lockObj)
            {
                RemoveHandlersWithCollectedTarget();

                foreach (var handlerItem in handler.GetInvocationList())
                    _weakHandlers.Add(new DelegateWeakReference(handlerItem));
            }
        }

        public void Remove(Delegate handler)
        {
            lock (_lockObj)
            {
                RemoveHandlersWithCollectedTarget();

                foreach (var handlerItem in handler.GetInvocationList())
                    for (int i = _weakHandlers.Count - 1; i >= 0; i--)
                        if (_weakHandlers[i].Equals(handlerItem))
                            _weakHandlers.RemoveAt(i);
            }
        }

        public Delegate InvocationList
        {
            get
            {
                lock (_lockObj)
                {
                    RemoveHandlersWithCollectedTarget();

                    Delegate result = null;
                    foreach (var weakHandler in _weakHandlers)
                    {
                        var handler = weakHandler.TryGetDelegate();
                        if (handler != null)
                            result = Delegate.Combine(result, handler);
                    }
                    return result;
                }
            }
        }

        void RemoveHandlersWithCollectedTarget()
        {
            for (int i = 0; i < _weakHandlers.Count; i++)
                if (_weakHandlers[i].IsTargetCollected)
                    _weakHandlers.RemoveAt(i);
        }
    }

    public class WeakEventHandler
    {
        WeakDelegate _weakDelegate = new WeakDelegate();

        public void Add(EventHandler handler)
        {
            _weakDelegate.Add(handler);
        }

        public void Remove(EventHandler handler)
        {
            _weakDelegate.Remove(handler);
        }

        public void Invoke(object sender, EventArgs e)
        {
            var handler = (EventHandler)_weakDelegate.InvocationList;
            if (handler != null)
                handler(sender, e);
        }
    }

    public class WeakAction
    {
        WeakDelegate _weakDelegate = new WeakDelegate();

        public void Add(Action handler)
        {
            _weakDelegate.Add(handler);
        }

        public void Remove(Action handler)
        {
            _weakDelegate.Remove(handler);
        }

        public void Invoke()
        {
            var handler = (Action)_weakDelegate.InvocationList;
            if (handler != null)
                handler();
        }
    }
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668280
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЕсли кому интересно - вот правильный код.
Не без ошибок. :-)

Patch для правильного кода
Код: plaintext
1.
2.
3.
4.
5.
        void RemoveHandlersWithCollectedTarget()
        {
            for (int i = _weakHandlers.Count - 1; i >= 0; i--)
                if (_weakHandlers[i].IsTargetCollected)
                    _weakHandlers.RemoveAt(i);
        }
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668290
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaОчередной маразм. Никто в здравом уме не помещает в ViewModel справочники.Их создают непосредственно в xaml, а viewmodel не перегружают ненужными деталями. И путей для этого много:
- конвертер
- провайдеры данных
- через расширения xaml возможны любые варианты.Например,самый вменяемый-через DI контейнеры или фабрики- берут из БД.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668353
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaОчередной маразм. Никто в здравом уме не помещает в ViewModel справочники.Их создают непосредственно в xaml, а viewmodel не перегружают ненужными деталями. И путей для этого много:
- конвертер
- провайдеры данных
- через расширения xaml возможны любые варианты.Например,самый вменяемый-через DI контейнеры или фабрики- берут из БД.
Все варианты, которые я описал, берут данные из БД, если нет кэширования
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668449
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАлексей КSeVaОчередной маразм. Никто в здравом уме не помещает в ViewModel справочники. Их создают непосредственно в xaml , а viewmodel не перегружают ненужными деталями. И путей для этого много:
- конвертер
- провайдеры данных
- через расширения xaml возможны любые варианты.Например,самый вменяемый-через DI контейнеры или фабрики- берут из БД.
Все варианты, которые я описал, берут данные из БД, если нет кэшированияМеня смутило это. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668510
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМусичкаЕще раз. То, что Вы написали - это ViewModel. ViewModel рисуется не для комбобоксов, а для всего представления. То есть, выведение проперти Categories для байдинга SelectedValue - это всего-лишь маленькая крупица того, что нужно написать для представления :)
P.S. Вообще сам по себе MVVM предполагает наличие "многабукаф" в проекте. Ибо.
Очередной маразм. Никто в здравом уме не помещает в ViewModel справочники. Их создают непосредственно в xaml, а viewmodel не перегружают ненужными деталями. И путей для этого много:
- конвертер
- провайдеры данных
- через расширения xaml возможны любые варианты.Например,самый вменяемый-через DI контейнеры или фабрики
Очередное гонево. Где там что-то сказано про "справочники"? Что ты понимаешь под ними?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668524
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНо но!!! Это часть новейшего WPF/SL фреймворка приложений будущего!!! :-)
Не спорю, но пока сыро и гнило :)

Алексей КМСУP.S2. Я жду полноценных WeakEventManager + IWeakEventListener, а не гуано на лопате :)Тут могу только посоветовать сходить к гуглу.
Дак уже ж ходил . Ужос.

Алексей КАлексей КЕсли кому интересно - вот правильный код.
Не без ошибок. :-)

Patch для правильного кода
Код: plaintext
1.
2.
3.
4.
5.
        void RemoveHandlersWithCollectedTarget()
        {
            for (int i = _weakHandlers.Count - 1; i >= 0; i--)
                if (_weakHandlers[i].IsTargetCollected)
                    _weakHandlers.RemoveAt(i);
        }


Лёнь, выложите солюшен с пару-тройкой кнопок и хендлингом вик эвентов. Посмотрим, потестируем.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668562
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛёнь, выложите солюшен с пару-тройкой кнопок и хендлингом вик эвентов. Посмотрим, потестируем.Думал об этом, но боюсь меня люди не поймут. Все нервные какие-то. :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668566
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КДумал об этом, но боюсь меня люди не поймут. Все нервные какие-то. :-))
Не уклоняйтесь!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668573
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНо но!!! Это часть новейшего WPF/SL фреймворка приложений будущего!!! :-)
Не спорю, но пока сыро и гнило :)Промышленная эксплуатация сего творения расставит всё по своим местам. :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668613
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПромышленная эксплуатация сего творения расставит всё по своим местам. :-))
Солюшен будет?

...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668635
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСолюшен будет?Ну если охото в нём поковыряться - мне не жалко. :-)

Для запуска нужна БД Northwind
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668637
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часть 2
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668688
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТо есть, выведение проперти Categories для байдинга SelectedValue- это всего-лишь маленькая крупица того, что нужно написать для представления :)
Вот яркий образец гонева и тупого, дословного понимания паттерна MVVM. Это только ты придумать можешь.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668716
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУТо есть, выведение проперти Categories для байдинга SelectedValue- это всего-лишь маленькая крупица того, что нужно написать для представления :)
Вот яркий образец гонева и тупого, дословного понимания паттерна MVVM. Это только ты придумать можешь.
Ты продолжаешь читать задним местом?

Алексей КSilverlightКомбобоксы сами по себе не живут. Они должны изменять значение, лучше всего это делать c помощью ViewModel.О чём и речь. Просто хочется, чтобы это выглядело примерно так, и не было дополнительных ограничений по порядку присваивания свойств Product и Categories .

Код: plaintext
\nclass ProductEditViewModel\n{\n    public Db.Products Product { get; set; }\n    public IEnumerable<Db.Categories> Categories { get; set; }\n\n    // Реализацию INotifyPropertyChanged опускаю\n}\n\n<ComboBox ItemsSource="{Binding Categories}"\n                  SelectedValue="{Binding Product.CategoryID}"\n                  SelectedValuePath="CategoryID"\n                  DisplayMemberPath="CategoryName"/>\n


/topic/734817&pg=3#8660505
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668795
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaМСУТо есть, выведение проперти Categories для байдинга SelectedValue- это всего-лишь маленькая крупица того, что нужно написать для представления :)
Вот яркий образец гонева и тупого, дословного понимания паттерна MVVM. Это только ты придумать можешь.
Ты продолжаешь читать задним местом?

Алексей КSilverlightКомбобоксы сами по себе не живут. Они должны изменять значение, лучше всего это делать c помощью ViewModel.О чём и речь. Просто хочется, чтобы это выглядело примерно так, и не было дополнительных ограничений по порядку присваивания свойств Product и Categories .

Код: plaintext
\nclass ProductEditViewModel\n{\n    public Db.Products Product { get; set; }\n    public IEnumerable<Db.Categories> Categories { get; set; }\n\n    // Реализацию INotifyPropertyChanged опускаю\n}\n\n<ComboBox ItemsSource="{Binding Categories}"\n                  SelectedValue="{Binding Product.CategoryID}"\n                  SelectedValuePath="CategoryID"\n                  DisplayMemberPath="CategoryName"/>\n


/topic/734817&pg=3#8660505
А ты как всегда продолжаешь думать одним местом. Тебе доходит с сотого раза, повторяю
public IEnumerable<Db.Categories> Categories { get; set; }
это полный бред. В силу своей профнепригодности ты даже не можешь понять о чем идет речь.
Look-up\'ов может быть много, чтобы не перегружать VM, их спокойно можно создвать во View.
Один из вариантов
Код: plaintext
\n <UserControl.Resources>\n        <vm:ViewModelLocator  x:Key="Categories" Type="{x:Type vm:Categories}" />\n  </UserControl.Resources>\n
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668813
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaLook-up'ов может быть много, чтобы не перегружать VM, их спокойно можно создвать во View.
Один из вариантовМне хотелось иметь полный контроль во вьюмодели над создаваемыми лукапами. Из-за этого и возник вопрос.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668832
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто это топик создал человек, который не понял в чем суть технологи шаблонов.поддерживают его тут такие же :)

они поняли ошибочно суть шаблонов программирования.

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

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


извините за переход на личности,но это вся тема о личности.о возмущенной личности.как это так каста инженеров не подумала за кодера?!


это попытка логически завершить такие флудотемы о личностных эмоциях какого то человека.
лучше бы делились разработками под новые задачи,чем обсуждали всякие не понятные шаблоны для нарезки спагетти кода.да:) именно спагетти кода. у вас есть код,вы берете шаблон и режете ,режете...режете.

так же попроше,не выдирать слова из контекста и делать цитирование всего этого.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668849
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKпросто это топик создал человек, который не понял в чем суть технологи шаблонов.поддерживают его тут такие же :)Мне кажется, Вы что-то путаете.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668866
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ALL

Убедительная просьба - не разводить срач в этом топике. Он не для этого.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668872
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaLook-up'ов может быть много, чтобы не перегружать VM, их спокойно можно создвать во View.
Один из вариантовМне хотелось иметь полный контроль во вьюмодели над создаваемыми лукапами. Из-за этого и возник вопрос.
А кто запрещает это делать в ViewModelLocator? Для простых случаев какой еще нужен контроль?
ЗЫ На мой вгляд, подобный контроль должен быть вынесен отдельно в cущности для UseCase. Логику реализуем в них, а VM - простой агрегатор данных.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668881
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaА ты как всегда продолжаешь думать одним местом. Тебе доходит с сотого раза, повторяю
public IEnumerable<Db.Categories> Categories { get; set; }
это полный бред. В силу своей профнепригодности ты даже не можешь понять о чем идет речь.
Look-up'ов может быть много, чтобы не перегружать VM, их спокойно можно создвать во View.
Один из вариантов
Код: plaintext
1.
2.
3.
 <UserControl.Resources>
        <vm:ViewModelLocator  x:Key="Categories" Type="{x:Type vm:Categories}" />
  </UserControl.Resources>

В силу своей профнепригодности ты даже не можешь понять того, что это тоже самое. Что грузить представление, что грузить вьюмодель - те же яйца.
Тут логики никакой нет. Следовательно, Categories можно описать в ViewModel, а можно декларативно (как ты описываешь). Или MVVM уже запрещает писать проперти во ViewModel?
P.S. Сева, иди учи паттерн MVVM. Изучишь, приходи, проверю.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668884
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaLook-up'ов может быть много, чтобы не перегружать VM, их спокойно можно создвать во View.
Один из вариантовМне хотелось иметь полный контроль во вьюмодели над создаваемыми лукапами. Из-за этого и возник вопрос.
Сева просто не в теме. Впаривает декларативную привязку. Ни проперть и ни декларативная привязка не перечит шаблону проектирования. Короче, те же яйца.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668886
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КAlexeiKпросто это топик создал человек, который не понял в чем суть технологи шаблонов.поддерживают его тут такие же :)Мне кажется, Вы что-то путаете.
+1
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668888
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaА кто запрещает это делать в ViewModelLocator?
А кто запрещает это делать в ViewModel?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668890
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaА кто запрещает это делать в ViewModelLocator? Для простых случаев какой еще нужен контроль?
ЗЫ На мой вгляд, подобный контроль должен быть вынесен отдельно в cущности для UseCase. Логику реализуем в них, а VM - простой агрегатор данных.На тот момент мне показалось, что проще этот функционал вынести в сам контрол. Преимущества - максимально упрощён прикладной код. Все остальные решения требуют создания в прикладном коде дополнительных объектов. Впрочем - я не настаиваю и вообще могу ошибаться. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668947
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА кто запрещает это делать в ViewModel?Неудобно. А для добавления удобства потребуется позднее связывание. Пусть оно будет по возможности только в XAML.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36668962
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУА кто запрещает это делать в ViewModel?Неудобно. А для добавления удобства потребуется позднее связывание. Пусть оно будет по возможности только в XAML.
Ничего неудобного. Описал проперть в ViewModel и подсосался к ней в декларативном коде. Ничего опасного и злого. Хотя, конечно, я отдаю голос за декларативность. Но, чтобы из этого раздувать опус, как Сева - это показывает абсолютное незнание паттерна. :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669072
гнидыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сева ты просто эпическое неразумное быдло
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669090
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМСУА кто запрещает это делать в ViewModel?Неудобно. А для добавления удобства потребуется позднее связывание. Пусть оно будет по возможности только в XAML.
Ничего неудобного. Описал проперть в ViewModel и подсосался к ней в декларативном коде. Ничего опасного и злого. Хотя, конечно, я отдаю голос за декларативность. Но, чтобы из этого раздувать опус, как Сева - это показывает абсолютное незнание паттерна. :)
Паттерны еще нужно уметь применять.
Вариант с тупым его пониманием предполагает:
Создать VM, добавить в него Property, добавить логику по загрузке. Данный Look-up может встречаться в 48 местах, повторить это для всех VM, где он нужен. Таких look-up в системе будут десятки-сотни код будет распухать на глазах.
Если думать головой, а не только заниматься писаниной на форуме, то:
1. Look-up задаем декларативно в xaml.
2. Пишем в одном месте загрузчик данных.
3. Для VM не создаем отдельного класса, а получаем его из DI контейнера на основе базового.

Несколько строк вместо спаггети-кода. Сынок, не тебе о паттернах рассуждать. Мой полы и не отвлекайся
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669094
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гнидычсева ты просто эпическое неразумное быдло
MСУ, вот ты и показал свое рыло.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669113
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaТаких look-up в системе будут десятки-сотни код будет распухать на глазах.
Ты начинаешь, как всегда, фантазировать. Где там в коде было что-то про распухание?

SeVa1. Look-up задаем декларативно в xaml.
2. Пишем в одном месте загрузчик данных.
3. Для VM не создаем отдельного класса, а получаем его из DI контейнера на основе базового.
2 и 3 пункт к вопросу не относятся, ты опять начинаешь влево сползать.
Так вот, декларативно ли будет заюзать лукап или через проперть: значения не имеет. Мы этим не нарушаем принцип паттерна. Учи матчасть.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669124
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaТаких look-up в системе будут десятки-сотни код будет распухать на глазах.
Ты начинаешь, как всегда, фантазировать. Где там в коде было что-то про распухание?

SeVa1. Look-up задаем декларативно в xaml.
2. Пишем в одном месте загрузчик данных.
3. Для VM не создаем отдельного класса, а получаем его из DI контейнера на основе базового.
2 и 3 пункт к вопросу не относятся, ты опять начинаешь влево сползать.
Так вот, декларативно ли будет заюзать лукап или через проперть: значения не имеет. Мы этим не нарушаем принцип паттерна. Учи матчасть.
Мол полы, пидарок, я не лечащий врач и не твоего это ума дело.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669132
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе на заборе написил, что VM должен предоставлять данные для View, вот ты в силу своей буквальности, это и понимаешь в самом тупом варианте.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669136
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa3. Для VM не создаем отдельного класса, а получаем его из DI контейнера на основе базового.Это как?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669221
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVa3. Для VM не создаем отдельного класса, а получаем его из DI контейнера на основе базового.Это как?
Базовый класс без деталей
Код: plaintext
1.
2.
3.
4.
public class ViewModel<T> : IViewModel<T>
{
  public T Model { get; set; }    
}

Регистрируем в DI-контейнере
сontainer.RegisterType(IViewModel<>, ViewModel<>);

Далее в коде получаем нужный vm
var vm = container.GetInstance<IViewModel<MyViewModel>>();
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669236
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вопрос к вам, тогда, раз у вас все по делу.

я так понимаю у mvvm есть практичная сторона и непрактичная.
вот смотрю ваши примеры кода и не понимаю, вы куда копаете?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669249
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaБазовый класс без деталей
Код: plaintext
1.
2.
3.
4.
public class ViewModel<T> : IViewModel<T>
{
  public T Model { get; set; }    
}

Регистрируем в DI-контейнере
сontainer.RegisterType(IViewModel<>, ViewModel<>);

Далее в коде получаем нужный vm
var vm = container.GetInstance<IViewModel<MyViewModel>>();Ок
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669283
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSeVaБазовый класс без деталей
Код: plaintext
1.
2.
3.
4.
public class ViewModel<T> : IViewModel<T>
{
  public T Model { get; set; }    
}

Регистрируем в DI-контейнере
сontainer.RegisterType(IViewModel<>, ViewModel<>);

Далее в коде получаем нужный vm
var vm = container.GetInstance<IViewModel<MyViewModel>>();Ок

ЧMO(это ник MCУ в его туалетной кабинке), в твоем варианте, придется каждый раз делать тупую работу по созданию и добавлению Look-up'ов в ViewModel.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669309
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЧMO(это ник MCУ в его туалетной кабинке)Не совсем понял к чему это... Прекращайте уже с МСУ ругаться, или делайте это в другом месте. МСУ, в Вам это тоже относится.
SeVaв твоем варианте, придется каждый раз делать тупую работу по созданию и добавлению Look-up'ов в ViewModel.Я знаю к чему это приведёт. Знаю альтернативные способы через XAML. Просто рассматриваю различные варианты решения. Пытаюсь выявить возможные проблемы.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669407
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУ, в Вам это тоже относится.
Лёш, а где я с ним ругаюсь? По-моему только от него идут оскорбления. Я уже нажал 2 раза кнопку модератора.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669477
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КМСУ, в Вам это тоже относится.
Лёш, а где я с ним ругаюсь? По-моему только от него идут оскорбления. Я уже нажал 2 раза кнопку модератора.
Ты только шакалить в тихаря умеешь, думая,в силу своей тупости, что не поймут чьих это рук дело.
ЗЫ А я давно говорил, что тебя лопаткой за это в детском саду по голове били и шизофрения.
Не думал только, что ты пидор(проблемы с психикой ведут, как правило, к педарастии), а так все понятно было давно.

Модератор: Занавес.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669512
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛёш, а где я с ним ругаюсь?Мне показалось что да. Впрочем, дело Ваше.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36669705
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лёш, продолжим:

Алексей КЯ знаю к чему это приведёт. Знаю альтернативные способы через XAML. Просто рассматриваю различные варианты решения. Пытаюсь выявить возможные проблемы.

неужели Вы считаете, что оформление лукапа в ViewModel перечит паттерну?

Далее. А к чему приведет? Распухание XAML супротив распуханию ViewModel. И?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36670491
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУнеужели Вы считаете, что оформление лукапа в ViewModel перечит паттерну?Меня это беспокоит меньше всего. :-))
МСУДалее. А к чему приведет? Распухание XAML супротив распуханию ViewModel. И?Тут надо смотреть конкретную ситуацию. Если из вьюмодели управлять содержимым лукапа не нужно, то вероятно предпочтительнее привязать XAML непосредственно к сервису, который создаёт содержимое лукапа (например singleton + {x:Static}). В этом случае мы можем избежать лишнего делегирования.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36670514
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впервые осилил весь топик. Заинтригован. Хочу теперь попробовать поработать с WPF (да-да, я наверно последний, кто сидит на Winforms).
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36670522
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, вот у меня вскоре жестко будет поставлен вопрос по поводу UI жирного клиента, так, что я думаю будет кстати поэкспериментировать с WPF.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36671634
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АбсолютВпервые осилил весь топик.

АбсолютХочу теперь попробовать поработать с WPF
Сыроват. И утечки памяти смущают.
Абсолютя наверно последний, кто сидит на Winforms
Как-раз-таки, наоборот :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36681922
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анимированный GIF
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682024
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Анимированный GIF

Чего анимированый гиф?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682072
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПЧего анимированый гиф?Ну не умеет он его, чего ещё-то може быть...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682080
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПЧего анимированый гиф?Ну не умеет он его, чего ещё-то може быть...
Кто кого чего не умеет?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682087
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Об чём топик?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682093
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КОб чём топик?
Хз. А чего с гифом то не так?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682100
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПХз. А чего с гифом то не так?Видимо нынче не модны гифанимации. Тут .
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682103
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПХз. А чего с гифом то не так?Видимо нынче не модны гифанимации. Тут .
Нынче модно использовать для анимации (в том числе для анимации гифанимации) MediaElement, а не Image
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682110
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПНынче модно использовать для анимации (в том числе для анимации гифанимации) MediaElement, а не ImageИ он живущий в ресурсе сборки гиф умеет?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682118
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПНынче модно использовать для анимации (в том числе для анимации гифанимации) MediaElement, а не ImageИ он живущий в ресурсе сборки гиф умеет?
По-моему нет.
И живущий в ресурсе сборки wmv тоже не умеет.
Или у меня с наскоку не получилось.
Но это совсем другая история :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682124
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППо-моему нет.
И живущий в ресурсе сборки wmv тоже не умеет.
Или у меня с наскоку не получилось.
Но это совсем другая история :)Вот и я о чём. :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682151
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛППо-моему нет.
И живущий в ресурсе сборки wmv тоже не умеет.
Или у меня с наскоку не получилось.
Но это совсем другая история :)Вот и я о чём. :-))
Нет, ты таки про анимированный гиф, а не про MediaElement и URI типа pack://
С гифом то как раз всё хорошо :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682179
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПНет, ты таки про анимированный гиф, а не про MediaElement и URI типа pack://
С гифом то как раз всё хорошо :)Согласен.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36682221
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и хрен с ним. Вставлю <ProgressBar IsIndeterminate="True"/> .
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36683598
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что там еще
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36683778
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой сидорас, простите, догадался несделать DependencyProperty к PasswordBox.Password ?
Руки оборвать по самую жопу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36683911
Фотография Хопа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПКакой сидорас, простите, догадался несделать DependencyProperty к PasswordBox.Password ?
Руки оборвать по самую жопу.

Все правильно сделано. Есть простейший вариант обойтись без DP к Password. Если интересует - могу посмотреть в проекте двухлетней давности у меня есть - неделю почти думал, как сделать
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36684173
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХопаВсе правильно сделано. Есть простейший вариант обойтись без DP к Password. Если интересует - могу посмотреть в проекте двухлетней давности у меня есть - неделю почти думал, как сделать

Спасибо, не интересует.
Приделать недостающее DP труда не составляет.
Раздражает сам факт того, что такой ерундой приходится заниматься.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36684202
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПРаздражает сам факт того, что такой ерундой приходится заниматься.
Ну да, есть такое дело.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36686857
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПКакой сидорас, простите, догадался несделать DependencyProperty к PasswordBox.Password ?
Руки оборвать по самую жопу.Присоединяюсь.
ХопаВсе правильно сделано.Нет.
ХопаЕсть простейший вариант обойтись без DP к Password. Если интересует - могу посмотреть в проекте двухлетней давности у меня есть - неделю почти думал , как сделать
Чё там думать-то. Даже без гугла само собой напрашивается Attached Property.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36686934
guest2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Анимированный GIF


Тоже мне проблема. Это же 100 строк кода всего:
http://rsdn.ru/forum/dotnet/3533948.aspx
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36687027
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest2Алексей К
Анимированный GIF
Тоже мне проблема. Это же 100 строк кода всего
ЛПРаздражает сам факт того, что такой ерундой приходится заниматься.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36687532
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Малый гемор предстоит в силверлайте без нормального ShowDialog...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36688196
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМалый гемор предстоит в силверлайте без нормального ShowDialog...
Оффтопите, Лёня ;)

P.S. ChildWindow
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36688397
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. ChildWindowa525

Внимательно знакомимся с ShowDialog в WPF/WinForms/Delphi, смотрим исходники, пытаемся почуять разницу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36688558
guest2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Это ты в браузере, что ли, собрался ShowDialog делать? Учимся делать нормальные приложения, основанные на NavigationService, а не кучу окон городить.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36688572
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУP.S. ChildWindowa525

Внимательно знакомимся с ShowDialog в WPF/WinForms/Delphi, смотрим исходники, пытаемся почуять разницу.

Юзаем ChildWindow и не ипём моск.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689077
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЮзаем ChildWindow и не ипём моск.Да там с лямбдами замучаешся. Опять же хочется иметь одинаковый прикладной код для WPF/SL.
guest2Это ты в браузере, что ли, собрался ShowDialog делать?ChildWindow есть, что мешает?
guest2Учимся делать нормальные приложения, основанные на NavigationService, а не кучу окон городить.Т. е. все существующие приложения с диалогами считаются ненормальными? Смелое утверждение. Диалог типа "Будет удалена завись. Продолжить? Да/Нет" тоже отдельной страницей делать?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689189
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КОпять же хочется иметь одинаковый прикладной код для WPF/SL.
А смысл? Я, вот, не понимаю эту сферически фанатичную идею делать минимальные зависимости на двух различных платформах. Накойляд (с) спрашивается.
Во-вторых, никто не мешает UI планировать на юзер-контролах, а Window (WPF) и ChildWindow (сильвер) использовать как хостеров.
Алексей КДиалог типа "Будет удалена завись. Продолжить? Да/Нет" тоже отдельной страницей делать?
Ну как-раз тут всё очень просто :)
Код: plaintext
var result = MessageBox.Show("Будет удалена завись. Продолжить?", "Шняжка", MessageBoxButton.OKCancel);
P.S. Всё-таки, NavigationService, как уже говорили, более полезен в браузерных решениях. Очень удобно иметь определенные странички в закладках. Поэтому, устраивать замес WPF с сильвером, по меньшей мере, неблагоразумно. Коням - овёс, волкам - овец. Не наоборот.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689376
guest2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кguest2Учимся делать нормальные приложения, основанные на NavigationService, а не кучу окон городить.Т. е. все существующие приложения с диалогами считаются ненормальными? Смелое утверждение. Смелое, особенно учитывая, что я этого не утверждал.Алексей КДиалог типа "Будет удалена завись. Продолжить? Да/Нет" тоже отдельной страницей делать?Для этого MessageBox есть.

Я фигею - делаем за оппонента утверждения и потом героически их опровергаем.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689483
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КОпять же хочется иметь одинаковый прикладной код для WPF/SL.
А смысл? Я, вот, не понимаю эту сферически фанатичную идею делать минимальные зависимости на двух различных платформах. Накойляд (с) спрашивается.Ну на первый взгляд этот не сложно. Почему бы и нет? :-)

МСУВо-вторых, никто не мешает UI планировать на юзер-контролах, а Window (WPF) и ChildWindow (сильвер) использовать как хостеров.А это не имеет значения. Хоть как тут делай - прикладной код будет отличаться.

МСУАлексей КДиалог типа "Будет удалена завись. Продолжить? Да/Нет" тоже отдельной страницей делать?
Ну как-раз тут всё очень просто :)
Код: plaintext
var result = MessageBox.Show("Будет удалена завись. Продолжить?", "Шняжка", MessageBoxButton.OKCancel);
Ну мы-то с вами знаем, что диалоги бывают более замысловатые...

Алексей КP.S. Всё-таки, NavigationService, как уже говорили, более полезен в браузерных решениях. Очень удобно иметь определенные странички в закладках. Поэтому, устраивать замес WPF с сильвером, по меньшей мере, неблагоразумно. Коням - овёс, волкам - овец. Не наоборот.Т. е. диалоги нынче не модно? Диалоги делаются в Windows-приложениях из-за отсутствия NavigationService?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689563
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу на первый взгляд этот не сложно. Почему бы и нет? :-)
Ну много в этой жизни, что не сложно. Так давайте же будем выдумывать феерические задачи и с гордостью их решать?
P.S. Нахненужно!

Алексей КА это не имеет значения. Хоть как тут делай - прикладной код будет отличаться.
Да, как ни крути. Шаг влево - уже расхождения с WPF.

Алексей КНу мы-то с вами знаем, что диалоги бывают более замысловатые...
ChildWindow же

Алексей КТ. е. диалоги нынче не модно? Диалоги делаются в Windows-приложениях из-за отсутствия NavigationService?
Диалоги - это замечательно. Речь о типе сильверовского проекта. Есть Silverlight Application (типа WPF как-бы) и есть Silverlight Navigation Application. Шаблоны проектов уже заряжены в VS2010. Так вот, Вам никто не запрещает юзать великолепный ChildWindow в SNA.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689640
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу мы-то с вами знаем, что диалоги бывают более замысловатые...
ChildWindow же Мы опять ходим по кругу. Я не говорю, что в ChildWindow нет ShowDialog. Я говорю что он неудобен. Делегат закрытия диалога возможно придётся тащить через несколько методов, если диалогов несколько. Это разьве нормально?

Код: plaintext
1.
2.
3.
myDialogService.InformationDialog("Ненавижу...", () =>
{
    // Чё-то делаем после закрытия
});

vs

Код: plaintext
1.
2.
myDialogService.InformationDialog("Ненавижу...");
// Чё-то делаем после закрытия
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689646
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А когда куча лямбд, stack trace становится весьма непонятным, что существенно затрудняет отладку.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689695
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЯ не говорю, что в ChildWindow нет ShowDialog.
Так а в нем и нет ShowDialog, в нем есть только Show :)

Алексей КЯ говорю что он неудобен. Делегат закрытия диалога возможно придётся тащить через несколько методов, если диалогов несколько. Это разьве нормально?
Зачем тащить куда-то делегат? А напрямую из вьюмодели не сутьпба?

MainViewModel.cs (типа главное окошко)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
/// <summary>
/// Вызов окна создания/редактирования сущности Customer
/// </summary>
/// <param name="customer"></param>
private void ShowCustomerEdit(Customer customer)
{
    CustomerEditWindow window = new CustomerEditWindow();
    CustomerEditWindowModel viewModel = new CustomerEditWindowModel(owner, customer);

    // Обработчик закрытия окна
    viewModel.RequestClose += window.Close;
    // Обработчик нажатия кнопки "Сохранить"
    viewModel.RequestOk += () =>
    {
        Customer changed = new Customer()
        {
            Id = viewModel.Id.GetValueOrDefault(),
            FirstName = viewModel.FirstName,
            Email = viewModel.Email,
        };

        // Изменить
        if (customer != null)
        {
            AllCustomers[AllCustomers.IndexOf(customer)] = changed;
        }
        // Добавить
        else
        {
            AllCustomers.Add(changed);
        }

        window.Close();
    };

    window.DataContext = viewModel;
    window.Owner = owner;

    window.ShowDialog();
}

/// <summary>
/// Все сущности Customer
/// </summary>
public ObservableCollection<Customer> AllCustomers
{
    get
    {
        return allCustomers;
    }

    set
    {
        allCustomers = value;
        base.OnPropertyChanged("AllCustomers");
    }
}


CustomerEditWindow.xaml (кнопачки)
Код: plaintext
1.
<Button Content="Сохранить" Command="{Binding OkCommand}" Height="25" Width="80" IsDefault="True" />
 <Button Content="Выход" Command="{Binding CloseCommand}" Height="25" Width="80" Margin="5,0,0,0" />


CustomerEditWindowModel.cs (вызываемая модальная шняжка)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
using System;
using System.Windows;
using System.Windows.Input;
using MvvmSample.Commands;
using MvvmSample.DataAccess;

namespace MvvmSample.ViewModel
{
    /// <summary>
    /// Модель CustomerEditWindow
    /// </summary>
    public class CustomerEditWindowModel : ViewModelBase
    {
        #region Private члены

        /// <summary>
        /// Делегат команды выхода из приложения
        /// </summary>
        private DelegateCommand closeCommand;

        /// <summary>
        /// Делегат команды нажатия кнопки "Сохранить"
        /// </summary>
        private DelegateCommand okCommand;

        #endregion

        #region Команды

        /// <summary>
        /// Команда закрытия окна
        /// </summary>
        public ICommand CloseCommand
        {
            get
            {
                closeCommand = closeCommand ?? new DelegateCommand(Close, CanClose);
                return closeCommand;
            }
        }

        /// <summary>
        /// Команда нажатия кнопки "Сохранить"
        /// </summary>
        public ICommand OkCommand
        {
            get
            {
                okCommand = okCommand ?? new DelegateCommand(Ok, CanOk);
                return okCommand;
            }
        }

        #endregion

        #region Логика модели

        /// <summary>
        /// Действие на закрытие окна
        /// </summary>
        public event Action RequestClose;

        /// <summary>
        /// Действие на нажатие кнопки "Сохранить"
        /// </summary>
        public event Action RequestOk;

        /// <summary>
        /// Можно ли закрывать окно
        /// </summary>
        /// <returns></returns>
        public bool CanClose()
        {
            return true;
        } 

        /// <summary>
        /// Закрытие окна
        /// </summary>
        public void Close()
        {
            if (RequestClose != null)
            {
                RequestClose();
            }
        }

        /// <summary>
        /// Можно ли закрывать окно
        /// </summary>
        /// <returns></returns>
        public bool CanOk()
        {
            return true;
        }

        /// <summary>
        /// Закрытие окна
        /// </summary>
        public void Ok()
        {
            if (RequestOk != null)
            {
                RequestOk();
            }
        } 

        /// <summary>
        /// Код
        /// </summary>
        public int? Id { get; set; }
        /// <summary>
        /// Имя
        /// </summary>
        public string FirstName { get; set; }
        /// <summary>
        /// Почтовый адрес
        /// </summary>
        public string Email { get; set; }

        /// <summary>
        /// Конструктор модели-представления
        /// Инициализируем модель-представление необходимыми данными
        /// </summary>
        public CustomerEditWindowModel(Window parentWindow = null, Customer customer = null)
        {
            if (customer != null)
            {
                this.Id = customer.Id;
                this.FirstName = customer.FirstName;
                this.Email = customer.Email;
            }
        }

        #endregion
    }
}


Ну как-то так :)

АлёшаА когда куча лямбд, stack trace становится весьма непонятным, что существенно затрудняет отладку.
Чё Вы к лямбдам привязались, что с ними не так? dinamyc? )
А stack trace тут как упал?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689747
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КЯ не говорю, что в ChildWindow нет ShowDialog.
Так а в нем и нет ShowDialog, в нем есть только Show :)Дапох как он там называется.

МСУАлексей КЯ говорю что он неудобен. Делегат закрытия диалога возможно придётся тащить через несколько методов, если диалогов несколько. Это разьве нормально?
Зачем тащить куда-то делегат? А напрямую из вьюмодели не сутьпба?Ну а если какой-то код нужно выполнить после закрытия диалога. Посмотри ещё раз мой последний пример. Вот обсуждение сабжа с авторами. Их лошадиные отмазки по поводу кросплатформенности кажутся весьма неубедительными.

МСУАлёшаА когда куча лямбд, stack trace становится весьма непонятным, что существенно затрудняет отладку.
Чё Вы к лямбдам привязались, что с ними не так? dinamyc? )
А stack trace тут как упал? Ну имена методов...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689813
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу а если какой-то код нужно выполнить после закрытия диалога.
Ёпт, опишите евент в диалоговом окне и из вызываемого окна присоситесь к нему. Ну пистец вопросы, Лёня... :(
Собственно, вариант с event Action, который я дал, так и работает. Ничего выдумывать не нужно. Контролировать можно полностью поведение вьюмодельки.

Алексей КПосмотри ещё раз мой последний пример. Вот обсуждение сабжа с авторами. Их лошадиные отмазки по поводу кросплатформенности кажутся весьма неубедительными.
Бать, дату смотрели? :) Тогда народ не знал о чилдвиндоу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689822
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, Лёня, харэ флудить! Диалоговость в сильвере есть. И точка.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689841
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу а если какой-то код нужно выполнить после закрытия диалога.Ёпт, опишите евент в диалоговом окне и из вызываемого окна присоситесь к нему. Ну пистец вопросы, Лёня... :(

Собственно, вариант с event Action, который я дал, так и работает. Ничего выдумывать не нужно. Контролировать можно полностью поведение вьюмодельки.
Ну я и возмущаюсь как обойтись без них. Чё лямбды на пустом месте плодить.

МСУАлексей КПосмотри ещё раз мой последний пример. Вот обсуждение сабжа с авторами. Их лошадиные отмазки по поводу кросплатформенности кажутся весьма неубедительными.
Бать, дату смотрели? :) Тогда народ не знал о чилдвиндоу.Чилдвиндоу был создан матерящимся сообществом на следующий день после первого релиза SL.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689856
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу я и возмущаюсь как обойтись без них. Чё лямбды на пустом месте плодить.
А, Вы про эти лямбды :) Я просто подумал, что Вы хотите передавать лямбды в вызываемый попап, чтоб как-бы не типизироваться, dinamyc вона даже предложил

Алексей КЧилдвиндоу был создан матерящимся сообществом на следующий день после первого релиза SL.
Хз, может и так. Но, это же решение Вашей "проблемы"?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689886
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНу я и возмущаюсь как обойтись без них. Чё лямбды на пустом месте плодить.
А, Вы про эти лямбды :) Я просто подумал, что Вы хотите передавать лямбды в вызываемый попап, чтоб как-бы не типизироваться, dinamyc вона даже предложил Ну наконец-то...
МСУАлексей КЧилдвиндоу был создан матерящимся сообществом на следующий день после первого релиза SL.
Хз, может и так. Но, это же решение Вашей "проблемы"?Да нет же...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36689917
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, вообще, если на то пошло, то как Вам вариант паттерна "батон клик"?
Никаких тебе делегатов и никаких тебе лямбд, автогенерация клик-методов рулит же.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36690061
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ Диалоговость в сильвере есть. И точка.
хороший термин. Зопесал в блокнотег


МСУА, вообще, если на то пошло, то как Вам вариант паттерна "батон клик"?
Никаких тебе делегатов и никаких тебе лямбд, автогенерация клик-методов рулит же.

pattern как pattern :) в МСДН'е куча примеров с использованием оного
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36690165
Не МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУАлексей КЯ не говорю, что в ChildWindow нет ShowDialog.
Так а в нем и нет ShowDialog, в нем есть только Show :)

Алексей КЯ говорю что он неудобен. Делегат закрытия диалога возможно придётся тащить через несколько методов, если диалогов несколько. Это разьве нормально?
Зачем тащить куда-то делегат? А напрямую из вьюмодели не сутьпба?

+
MainViewModel.cs (типа главное окошко)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
/// <summary>
/// Вызов окна создания/редактирования сущности Customer
/// </summary>
/// <param name="customer"></param>
private void ShowCustomerEdit(Customer customer)
{
    CustomerEditWindow window = new CustomerEditWindow();
    CustomerEditWindowModel viewModel = new CustomerEditWindowModel(owner, customer);

    // Обработчик закрытия окна
    viewModel.RequestClose += window.Close;
    // Обработчик нажатия кнопки "Сохранить"
    viewModel.RequestOk += () =>
    {
        Customer changed = new Customer()
        {
            Id = viewModel.Id.GetValueOrDefault(),
            FirstName = viewModel.FirstName,
            Email = viewModel.Email,
        };

        // Изменить
        if (customer != null)
        {
            AllCustomers[AllCustomers.IndexOf(customer)] = changed;
        }
        // Добавить
        else
        {
            AllCustomers.Add(changed);
        }

        window.Close();
    };

    window.DataContext = viewModel;
    window.Owner = owner;

    window.ShowDialog();
}

/// <summary>
/// Все сущности Customer
/// </summary>
public ObservableCollection<Customer> AllCustomers
{
    get
    {
        return allCustomers;
    }

    set
    {
        allCustomers = value;
        base.OnPropertyChanged("AllCustomers");
    }
}


+
CustomerEditWindow.xaml (кнопачки)
Код: plaintext
1.
<Button Content="Сохранить" Command="{Binding OkCommand}" Height="25" Width="80" IsDefault="True" />
 <Button Content="Выход" Command="{Binding CloseCommand}" Height="25" Width="80" Margin="5,0,0,0" />


+
CustomerEditWindowModel.cs (вызываемая модальная шняжка)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
using System;
using System.Windows;
using System.Windows.Input;
using MvvmSample.Commands;
using MvvmSample.DataAccess;

namespace MvvmSample.ViewModel
{
    /// <summary>
    /// Модель CustomerEditWindow
    /// </summary>
    public class CustomerEditWindowModel : ViewModelBase
    {
        #region Private члены

        /// <summary>
        /// Делегат команды выхода из приложения
        /// </summary>
        private DelegateCommand closeCommand;

        /// <summary>
        /// Делегат команды нажатия кнопки "Сохранить"
        /// </summary>
        private DelegateCommand okCommand;

        #endregion

        #region Команды

        /// <summary>
        /// Команда закрытия окна
        /// </summary>
        public ICommand CloseCommand
        {
            get
            {
                closeCommand = closeCommand ?? new DelegateCommand(Close, CanClose);
                return closeCommand;
            }
        }

        /// <summary>
        /// Команда нажатия кнопки "Сохранить"
        /// </summary>
        public ICommand OkCommand
        {
            get
            {
                okCommand = okCommand ?? new DelegateCommand(Ok, CanOk);
                return okCommand;
            }
        }

        #endregion

        #region Логика модели

        /// <summary>
        /// Действие на закрытие окна
        /// </summary>
        public event Action RequestClose;

        /// <summary>
        /// Действие на нажатие кнопки "Сохранить"
        /// </summary>
        public event Action RequestOk;

        /// <summary>
        /// Можно ли закрывать окно
        /// </summary>
        /// <returns></returns>
        public bool CanClose()
        {
            return true;
        } 

        /// <summary>
        /// Закрытие окна
        /// </summary>
        public void Close()
        {
            if (RequestClose != null)
            {
                RequestClose();
            }
        }

        /// <summary>
        /// Можно ли закрывать окно
        /// </summary>
        /// <returns></returns>
        public bool CanOk()
        {
            return true;
        }

        /// <summary>
        /// Закрытие окна
        /// </summary>
        public void Ok()
        {
            if (RequestOk != null)
            {
                RequestOk();
            }
        } 

        /// <summary>
        /// Код
        /// </summary>
        public int? Id { get; set; }
        /// <summary>
        /// Имя
        /// </summary>
        public string FirstName { get; set; }
        /// <summary>
        /// Почтовый адрес
        /// </summary>
        public string Email { get; set; }

        /// <summary>
        /// Конструктор модели-представления
        /// Инициализируем модель-представление необходимыми данными
        /// </summary>
        public CustomerEditWindowModel(Window parentWindow = null, Customer customer = null)
        {
            if (customer != null)
            {
                this.Id = customer.Id;
                this.FirstName = customer.FirstName;
                this.Email = customer.Email;
            }
        }

        #endregion
    }
}


Ну как-то так :)

АлёшаА когда куча лямбд, stack trace становится весьма непонятным, что существенно затрудняет отладку.
Чё Вы к лямбдам привязались, что с ними не так? dinamyc? )
А stack trace тут как упал?
МСУ, на какой помойке ты этот гомнокод откопал?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36691522
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36691540
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понравилось решение проблемы.

Безумный herbertI meet the same problem, and I think it was because that the Tabcontrol will remove the content of current TabItem from the visual tree and add the content of the selected TabItem to the visual tree when you switch Tabs. Then as the visual tree updated, there will be loaded and unloaded event fired for the newly added control and removed control respectively.
I solved this problem by write a new tab control , which added all the items to the visual tree at the very beginning, and just make it hiden when the item was unselected, make it visible when the item was selected. This accelerate the switch speed a lot, especialy when the TabItem’s content is complex.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36691595
I love WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПРоблема не стоит выеденного яйца.
Порочный подход из WinForms
автор
In all my Windows Forms applications, I usually start with a common base class for forms

При более внятном варианте ViewModel first отслеживать загрузку View - совершенно лишнее. Кроме того в WPF нет никакой поддрежки наследования forms за полной ненадобностью.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36691665
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I love WPFПри более внятном варианте ViewModel first отслеживать загрузку View - совершенно лишнее.Согласен. Просто удивил сам факт этого явления. :-)

I love WPFКроме того в WPF нет никакой поддрежки наследования forms за полной ненадобностью.Да, это проблемы того топикстартера. Бог ему судья. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36691719
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I love WPFПри более внятном варианте ViewModel first отслеживать загрузку View - совершенно лишнее.С другой стороны, при написании Attached Property и т. п. - Loaded может быть просто незаменимым.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36692759
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Незаменимых у нас нет. Создаем свойство IsInitialized. Инициализацию делаем только, если значение этого свойства = false, после инициализации переводим его в true.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36693144
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, из разряда паттерна "лапшекод". Браво, хорошие стили тут обсуждаются
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36693523
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Ну дык если пошла борьба с инструментом - чего ждать?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36693976
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPFНезаменимых у нас нет. Создаем свойство IsInitialized. Инициализацию делаем только, если значение этого свойства = false, после инициализации переводим его в true.
Код: plaintext
1.
2.
3.
4.
5.
6.
RoutedEventHandler targetOnceLoaded = null;
targetOnceLoaded = (s, e) =>
{
    target.Loaded -= targetOnceLoaded;    
    Debug.WriteLine("I hate WPF.");
}; 
target.Loaded += targetOnceLoaded;
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36694184
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилНу дык если пошла борьба с инструментом - чего ждать?
Будем плодить Magic Pattern'ы?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36694625
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КI\'ve WPFНезаменимых у нас нет. Создаем свойство IsInitialized. Инициализацию делаем только, если значение этого свойства = false, после инициализации переводим его в true.
Код: plaintext
1.
2.
3.
4.
5.
6.
RoutedEventHandler targetOnceLoaded = null;
targetOnceLoaded = (s, e) =>
{
    target.Loaded -= targetOnceLoaded;    
    Debug.WriteLine(\"I hate WPF.\");
}; 
target.Loaded += targetOnceLoaded;


IsInitialized - вариант для ViewModel.Где и для чего нужны практальные методы с контролами?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36694850
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpfГде и для чего нужны практальные методы с контролами?Мало ли чего...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36699307
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кхе...

WPF, MVVM, стандартная вьюмодель с INotifyPropertyChanged, с примитивными (условно говоря - String) и коллекционными (List<String>) пропертями, обычная вьюха с текстбоксами и комбобоксами, текстбоксы вьюхи прибиндены к примитивным пропертям вьюмодели, SelectedValue вьюхи прибиндены к примитивным пропертям вьюмодели, ItemSource комбобоксов прибиндены к коллекционным пропертям вьюмодели. Всё стандартно вроде бы. И вроде всё работает как надо. Но.

Как только делаю view.DataContext = null, так тут же зачем-то получаю обнуление (установку в null) свойств вьюмодели, но не всех, а только тех, к которым прибиндены SelectedValue у комбобоксов (бинды текстбоксов, итемсорсов и команд не затрагиваются)

Внимание, вопрос - я делаю что-то не так, или же я ненавижу WPF?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36699572
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПкхе...

WPF, MVVM, стандартная вьюмодель с INotifyPropertyChanged, с примитивными (условно говоря - String) и коллекционными (List<String>) пропертями, обычная вьюха с текстбоксами и комбобоксами, текстбоксы вьюхи прибиндены к примитивным пропертям вьюмодели, SelectedValue вьюхи прибиндены к примитивным пропертям вьюмодели, ItemSource комбобоксов прибиндены к коллекционным пропертям вьюмодели. Всё стандартно вроде бы. И вроде всё работает как надо. Но.

Как только делаю view.DataContext = null, так тут же зачем-то получаю обнуление (установку в null) свойств вьюмодели, но не всех, а только тех, к которым прибиндены SelectedValue у комбобоксов (бинды текстбоксов, итемсорсов и команд не затрагиваются)

Внимание, вопрос - я делаю что-то не так, или же я ненавижу WPF?Баян.

Там же чуть ниже небольшой срач по этой проблеме и одно из её решений.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36700462
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К... и одно из её решений.Впрочем, не самое удачное. Нынче модно через attached property...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36700512
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, если я ничего не путаю - "это" в WPF 4 исправлено.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36700621
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КБаян.

Там же чуть ниже небольшой срач по этой проблеме и одно из её решений.
Не то.
Я же не трогаю ItemsSource
Я никакие пропертя вьюмодели не трогаю.
Я вообще не трогаю вьюмодель.
Я трогаю вьюху, но даже у вьюхи я не затрагиваю биндинги, просто отцепляю её от вьюмодели. И при этом отцеплении идёт обнуление свойств вьюмодели, причём не всех.

т.е. код такой:

View.xaml
Код: plaintext
<UserControl x:Class="WpfApplication5.View"\n    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"\n    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\n    <StackPanel>\n        <ComboBox ItemsSource="{Binding Path=Items, Mode=OneTime}" SelectedValue="{Binding Path=SelectedItem}"/>\n        <TextBox Text="{Binding Path=SomeProperty}"/>\n    </StackPanel>\n</UserControl>

ViewModel.cs
Код: plaintext
public class ViewModel : INotifyPropertyChanged\n{\n    public event PropertyChangedEventHandler PropertyChanged;\n    private void InvokePropertyChanged(String propertyName)\n    {\n        PropertyChangedEventHandler propertyChanged = PropertyChanged;\n        if (propertyChanged != null) propertyChanged(this, new PropertyChangedEventArgs(propertyName));\n    }\n\n    public IEnumerable<String> Items { get; private set; }\n    private string _selectedItem;\n    public String SelectedItem\n    {\n        get { return _selectedItem; }\n        set\n        {\n            if (_selectedItem == value) return;\n\n            _selectedItem = value;\n            InvokePropertyChanged("SelectedItem");\n\n            Console.WriteLine("SelectedItem: " + (value ?? "null"));\n        }\n    }\n\n    private string _someProperty;\n    public String SomeProperty\n    {\n        get { return _someProperty; }\n        set\n        {\n            if (_someProperty == value) return;\n\n            _someProperty = value;\n            InvokePropertyChanged("SomeProperty");\n\n            Console.WriteLine("SomeProperty: " + (value ?? "null"));\n        }\n    }\n\n    public ViewModel()\n    {\n        Items = new List<string> {"aaaa", "bbbb", "cccc", "dddd"};\n        SelectedItem = "aaaa";\n    }\n}

Window1.xaml
Код: plaintext
<Window x:Class="WpfApplication5.Window1"\n    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"\n    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n    Title="Window1" Height="300" Width="300">\n    <StackPanel>\n        <ContentControl Name="ContentControl1" Height="100" />\n        <Button Content="Load" Click="Load"/>\n        <Button Content="Unload" Click="Unload"/>\n    </StackPanel>\n</Window>

Window1.xaml.cs
Код: plaintext
public partial class Window1 : Window\n{\n    public Window1()\n    {\n        InitializeComponent();\n    }\n\n    private void Load(object sender, RoutedEventArgs e)\n    {\n        ContentControl1.Content = new View {DataContext = new ViewModel()};\n    }\n\n    private void Unload(object sender, RoutedEventArgs e)\n    {\n        var view = ContentControl1.Content as FrameworkElement;\n        // При исполнении следующей строчки идёт обнуление св-ва SelectedItem у вьюмодели\n        if(view!=null) view.DataContext = null;\n        ContentControl1.Content = null;\n    }\n}
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36701023
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП,

2 (два) упоминавшихся здесь паттерна решат эти проблемы - спагетти_код и баттон_клик
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36701358
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36701556
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПАлексей КБаян.

Там же чуть ниже небольшой срач по этой проблеме и одно из её решений.
Не то.
Я же не трогаю ItemsSource
Я никакие пропертя вьюмодели не трогаю.
Я вообще не трогаю вьюмодель.
Я трогаю вьюху, но даже у вьюхи я не затрагиваю биндинги, просто отцепляю её от вьюмодели. И при этом отцеплении идёт обнуление свойств вьюмодели, причём не всех.

т.е. код такой:

View.xaml
+
Код: plaintext
<UserControl x:Class="WpfApplication5.View"\n    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"\n    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">\n    <StackPanel>\n        <ComboBox ItemsSource="{Binding Path=Items, Mode=OneTime}" SelectedValue="{Binding Path=SelectedItem}"/>\n        <TextBox Text="{Binding Path=SomeProperty}"/>\n    </StackPanel>\n</UserControl>

ViewModel.cs
+
Код: plaintext
public class ViewModel : INotifyPropertyChanged\n{\n    public event PropertyChangedEventHandler PropertyChanged;\n    private void InvokePropertyChanged(String propertyName)\n    {\n        PropertyChangedEventHandler propertyChanged = PropertyChanged;\n        if (propertyChanged != null) propertyChanged(this, new PropertyChangedEventArgs(propertyName));\n    }\n\n    public IEnumerable<String> Items { get; private set; }\n    private string _selectedItem;\n    public String SelectedItem\n    {\n        get { return _selectedItem; }\n        set\n        {\n            if (_selectedItem == value) return;\n\n            _selectedItem = value;\n            InvokePropertyChanged("SelectedItem");\n\n            Console.WriteLine("SelectedItem: " + (value ?? "null"));\n        }\n    }\n\n    private string _someProperty;\n    public String SomeProperty\n    {\n        get { return _someProperty; }\n        set\n        {\n            if (_someProperty == value) return;\n\n            _someProperty = value;\n            InvokePropertyChanged("SomeProperty");\n\n            Console.WriteLine("SomeProperty: " + (value ?? "null"));\n        }\n    }\n\n    public ViewModel()\n    {\n        Items = new List<string> {"aaaa", "bbbb", "cccc", "dddd"};\n        SelectedItem = "aaaa";\n    }\n}

Window1.xaml
+
Код: plaintext
<Window x:Class="WpfApplication5.Window1"\n    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"\n    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"\n    Title="Window1" Height="300" Width="300">\n    <StackPanel>\n        <ContentControl Name="ContentControl1" Height="100" />\n        <Button Content="Load" Click="Load"/>\n        <Button Content="Unload" Click="Unload"/>\n    </StackPanel>\n</Window>

Window1.xaml.cs
+
Код: plaintext
public partial class Window1 : Window\n{\n    public Window1()\n    {\n        InitializeComponent();\n    }\n\n    private void Load(object sender, RoutedEventArgs e)\n    {\n        ContentControl1.Content = new View {DataContext = new ViewModel()};\n    }\n\n    private void Unload(object sender, RoutedEventArgs e)\n    {\n        var view = ContentControl1.Content as FrameworkElement;\n        // При исполнении следующей строчки идёт обнуление св-ва SelectedItem у вьюмодели\n        if(view!=null) view.DataContext = null;\n        ContentControl1.Content = null;\n    }\n}

Не пробовал читать документацию прежде, чем забивать головой гвозди?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36701705
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpfНе пробовал читать документацию прежде, чем забивать головой гвозди?
Нет конечно, я ж не читатель
По теме сказать есть чего?
Если нет, то и до свидания, не кашляй.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36701740
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу и по теме.Прежде, чем смешить на форуме:
1. Прочитай хотя бы один букварь.Подозреваю, что одного раза будет мало, читай до дыр.
2. Затем выучи матчасть с контролами(у селекторов есть одно замечательное свойство,которое обуславливает подобное поведение)
3. Не мучай свою задницу изобретением "паттернов" button click, попробуй напрячь свои мозги, чтобы осилить хотя бы один готовый framework.
Тогда подобного бреда и стонов не будет.
ЗЫ Тебе тоже не болеть.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702023
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpf
<высерки мозга поскипаны>
...
у селекторов есть одно замечательное свойство,которое обуславливает подобное поведение
...
<высерки мозга поскипаны>

То есть ты утверждаешь, что такое поведение - это нормально, и обуславливается заданием какого-то свойства? Очень хорошо, это именно то, о чём я спрашивал, когда задавал вопрос "что я делаю не так".
Ну а теперь - ты уж не строй из себя красну девицу, не стесняйся, скажи, как это свойство называется. А я уж сумею найти, во что его установить.

И ежели оно сработает в FW 3.5, то у меня тут же возникнет вопрос, почему оно не работает в FW 4.0 (ибо подобное поведение, хоть по твоим словам и обусловлено каким-то свойством и является нормальным, однако же не наблюдается в 4.0).
Неужто злые майкрософтовцы исправили правильное поведение на неправильное?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702060
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПНе то.
Я же не трогаю ItemsSource
Я никакие пропертя вьюмодели не трогаю.
Я вообще не трогаю вьюмодель.
Я трогаю вьюху, но даже у вьюхи я не затрагиваю биндинги, просто отцепляю её от вьюмодели. И при этом отцеплении идёт обнуление свойств вьюмодели, причём не всех.Ну у тебя датабиндинг привязан к свойству ItemsSource и ты меняешь DataContext. Впрочем, может я и ошибаюсь, просто предположил. :-)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702066
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНу у тебя датабиндинг привязан к свойству ItemsSource и ты меняешь DataContext. Впрочем, может я и ошибаюсь, просто предположил. :-)
Да не ошибаешься, правильно предположил.
Действительно, привязка к ItemsSource. Действительно, меняю датаконтекст. Но ItemsSource то я не меняю, поэтому твой тынц - это всё-таки "не то".

Понятно, что ноги из одного и того же места растут. При смене датаконтекста меняется (обнуляется) итемссорс, при смене итемссорса сбрасывается селектедайтем (уж так комбобокс уроды реализовали).
Но почему, блин, нельзя было внутрях вьюхи сначала отцепить датаконтекст, а уже потом обнулять комбобоксовый итемссорс, пусть даже с последующим (обусловленным реализацией комбобокса) обнулением селектедайтема? Кривая реализация комбобокса так бы и осталась, куда б она делась, но эта комбобоксовая кривость хотя бы не проваливалась на уровень уже отцепленной вьюмодели.
А так - на одно говно наложилось другое, в итоге говно в квадрате.

Сидорасы, одним словом.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702072
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpfМогу и по теме.Ну расскажи чё делать-то?

Сабж

ProblemIf you have an implicit Style that uses BaseOn that is located in App.xaml or in a Merged Resource Dictionary that is merged in App.xaml, the WPF & Silverlight Designer will always be in a read-only error state.
Gold Bar Error: InstanceBuilderException was thrown due to a document error: a loop was detected in the property expressions
Error List Error: A loop was detected in the property expressions
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702147
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот зачем такое приходится писать?

Ненужный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
    public class SkinManager
    {
        public static SkinManager I
        {
            get { return Singleton.GetInstance<SkinManager>(); }
        }

        ResourceDictionary _skinResources;

        public void SetSkin(Uri skinResourcesUri)
        {
            if (_skinResources != null)
                throw new InvalidOperationException("_skinResources != null");

            _skinResources = LoadResources(skinResourcesUri);
            Application.Current.Resources.MergedDictionaries.Insert(0, _skinResources);
            SetBasedOnForTypeStyles(Application.Current.Resources);
        }

        ResourceDictionary LoadResources(Uri uri)
        {
            var result = new ResourceDictionary();
            result.Source = uri;
            return result;
        }

        void SetBasedOnForTypeStyles(ResourceDictionary resources)
        {
            foreach (object key in resources.Keys)
            {
                Type typeKey = key as Type;
                if (typeKey != null)
                {
                    Style style = resources[typeKey] as Style;
                    if (style != null && style.BasedOn == null)
                    {
                        Style baseStyle = _skinResources[typeKey] as Style;
                        if (baseStyle != null)
                            style.BasedOn = baseStyle;
                    }
                }
            }

            foreach (ResourceDictionary mergedDictionary in resources.MergedDictionaries)
                if (mergedDictionary != _skinResources)
                    SetBasedOnForTypeStyles(mergedDictionary);
        }
    }
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702909
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КНу вот зачем такое приходится писать?

+
Ненужный код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
    public class SkinManager
    {
        public static SkinManager I
        {
            get { return Singleton.GetInstance<SkinManager>(); }
        }

        ResourceDictionary _skinResources;

        public void SetSkin(Uri skinResourcesUri)
        {
            if (_skinResources != null)
                throw new InvalidOperationException("_skinResources != null");

            _skinResources = LoadResources(skinResourcesUri);
            Application.Current.Resources.MergedDictionaries.Insert(0, _skinResources);
            SetBasedOnForTypeStyles(Application.Current.Resources);
        }

        ResourceDictionary LoadResources(Uri uri)
        {
            var result = new ResourceDictionary();
            result.Source = uri;
            return result;
        }

        void SetBasedOnForTypeStyles(ResourceDictionary resources)
        {
            foreach (object key in resources.Keys)
            {
                Type typeKey = key as Type;
                if (typeKey != null)
                {
                    Style style = resources[typeKey] as Style;
                    if (style != null && style.BasedOn == null)
                    {
                        Style baseStyle = _skinResources[typeKey] as Style;
                        if (baseStyle != null)
                            style.BasedOn = baseStyle;
                    }
                }
            }

            foreach (ResourceDictionary mergedDictionary in resources.MergedDictionaries)
                if (mergedDictionary != _skinResources)
                    SetBasedOnForTypeStyles(mergedDictionary);
        }
    }

Код выдернут из контекста и не понятно, где и когда он вызывается. Но однозначно можно сказать, что знанием матчасти также отсутствует.
Необходимо вызывать Application.LoadComponent("Требуемый UriPack")
перед InitializeComponent().
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36702963
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPFКод выдернут из контекста и не понятноКонтекст описан чуть выше.
I've WPFгде и когда он вызывается.При старте приложения. В например Application.OnStartup.
I've WPFНо однозначно можно сказать, что знанием матчасти также отсутствует.Ну к тебе и обратились за помощью.
I've WPFНеобходимо вызывать Application.LoadComponent("Требуемый UriPack")
перед InitializeComponent().Какая нах разница? Причём тут InitializeComponent?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703026
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПАлексей КНу у тебя датабиндинг привязан к свойству ItemsSource и ты меняешь DataContext. Впрочем, может я и ошибаюсь, просто предположил. :-)
Да не ошибаешься, правильно предположил.
Действительно, привязка к ItemsSource. Действительно, меняю датаконтекст. Но ItemsSource то я не меняю, поэтому твой тынц - это всё-таки "не то".

Понятно, что ноги из одного и того же места растут. При смене датаконтекста меняется (обнуляется) итемссорс, при смене итемссорса сбрасывается селектедайтем (уж так комбобокс уроды реализовали).
Но почему, блин, нельзя было внутрях вьюхи сначала отцепить датаконтекст, а уже потом обнулять комбобоксовый итемссорс, пусть даже с последующим (обусловленным реализацией комбобокса) обнулением селектедайтема? Кривая реализация комбобокса так бы и осталась, куда б она делась, но эта комбобоксовая кривость хотя бы не проваливалась на уровень уже отцепленной вьюмодели.
А так - на одно говно наложилось другое, в итоге говно в квадрате.

Сидорасы, одним словом.
Если данные должны синхронизироваться в два конца, то что должно произойти, когда на одном они обнуляются?
WPF нервно относится к нулевому datacontext, нигде я не видел подобного. Если тебе это нужно, то твоя нелучшая реализация(в так горячо вами обсуждаемом Prism, это делается без кода во view) самого дубого варианта - View First сделана криво.
В pwf 4.0 движок переделан, исправлены косяки, посему квадраты и проявляются.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703097
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей ККакая нах разница? Причём тут InitializeComponent?
Сначала инициализируем контролы, а потом пытаемся им втолковать, как они должны смотреться?!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703127
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPFАлексей ККакая нах разница? Причём тут InitializeComponent?
Сначала инициализируем контролы, а потом пытаемся им втолковать, как они должны смотреться?!Ну посмотри уже постановку задачи. Речь идёт о присоединении скина через Application.Resources и о наследовании "дефолтных" стилей для типа и о неадекватном (наверное) поведении дизайнера.

В рантайме это работает, а дизайнер от этого гибнет.

Код: plaintext
1.
2.
3.
4.
<ResourceDictionary>    
    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">

    .............
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703162
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPFЕсли данные должны синхронизироваться в два конца, то что должно произойти, когда на одном они обнуляются?
Тюю
А где ж они у меня обнуляются то, эти самые данные?
Создал вьюху - прицепил к датаконтексту - отцепил от датаконтекста - убил вьюху
Из кода данные не менял. Ни "простые" данные, ни итемссорс у комбобокса. В интерфейсе тоже ничего не менял. Вообще даже мышью во вью не тыкал.
И тут, панимаешь ли, шевеление вьюмодели непонятно откуда.
Отрубилихуюголову - а тушка обезглавленная впляс.

WPF нервно относится к нулевому datacontext, нигде я не видел подобного.
Так я нипонил, это чьи проблемы?
То говорил - кури букварь, проперти у селектора есть, то вдруг - wpf нервно относится. Мне что, успокоительного ему накапать, чтоб он не нервничал так?

Если тебе это нужно
Что "это"?
Мне нужно отцепить вьюху от вьюмодели. Например для того, чтобы прицепить к другой вьюмодели. Или для того, чтобы к этой вьюмодели прицепить другую вьюху. Или мало ли еще для чего.
Что бы мне ни было нужно - в момент отцепления вьюмодели от вьюхи я не ожидаю шевелений беспричинных.

то твоя нелучшая реализация(в так горячо вами обсуждаемом Prism, это делается без кода во view) самого дубого варианта - View First сделана криво.
Хде ж ты у меня увидел код во View?
И уж как можно сделать "некриво" две строчки кода со смыслом "прицепил вьюмодель ко вьюхе" и "отцепил вьюмодель от вьюхи"?
Хоть View First, хоть не View First, хоть Prism, хоть не Prism.

В pwf 4.0 движок переделан, исправлены косяки, посему квадраты и проявляются.
Так чиво там с пропертёй у селектора?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703213
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПМне нужно отцепить вьюху от вьюмодели. Например для того, чтобы прицепить к другой вьюмодели. Или для того, чтобы к этой вьюмодели прицепить другую вьюху. Или мало ли еще для чего.
Что бы мне ни было нужно - в момент отцепления вьюмодели от вьюхи я не ожидаю шевелений беспричинных.А может не нужно обнулять DataContext? Просто обнулить все ссылки на вьюху, убрать её из логического дерева - и она рано или поздно погибнет от рук равнодушного GC?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703220
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или подумать о DataTemplate.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703524
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КI've WPFАлексей ККакая нах разница? Причём тут InitializeComponent?
Сначала инициализируем контролы, а потом пытаемся им втолковать, как они должны смотреться?!Ну посмотри уже постановку задачи. Речь идёт о присоединении скина через Application.Resources и о наследовании "дефолтных" стилей для типа и о неадекватном (наверное) поведении дизайнера.

В рантайме это работает, а дизайнер от этого гибнет.

Код: plaintext
1.
2.
3.
4.
<ResourceDictionary>    
    <Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">

    .............


тынц или http://%5DDesignTimeResourceDictionary%5B/url], или ComponentResourceKey
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703541
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПМне нужно отцепить вьюху от вьюмодели.А может не нужно обнулять DataContext?
Это такая задачка на сообразительность? Как отцепить вью от вьюмодели, не обнуляя при этом DataContext?
Уважуха. По буддистски. Прям таки хлопок одной ладонью.

А вообще весело. Получается, что вот так вот писать нельзя:
Код: plaintext
1.
2.
view.DataContext = viewModel1;
// подрочили вприсядку
view.DataContext = viewModel2;
Надо писать вот так вот, а то башка снег попадёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
view.DataContext = viewModel1;
// подрочили вприсядку
if (viewModel2 != null)
{
    // Какое щастье, можем сменить датаконтекст, и предыдущая вьюмодель не шевельнётся
    view.DataContext = viewModel2;
}
else
{
    // Какое нищастье :(
    Application.Shutdown();
}

Просто обнулить все ссылки на вьюху, убрать её из логического дерева - и она рано или поздно погибнет от рук равнодушного GC?
... и не дай то бог сотворить свою тупую реализацию ICommand, и прибиндить к ней кнопь. Тады равнодушный GC так и останется равнодушным. Вьюхи же будут плодиться как кролики, и жить как дунканы макклауды.
Ну ладно, я знаю, что так делать низзя. А ежели мне кирпич на голову упадёт, и на моё место придёт кто-то, кто этого не знает, и словей типа DelegateCommand ни разу в рот не брал?

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

Ну или подумать о DataTemplate.
В куда?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703549
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703579
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПАлексей КЛПМне нужно отцепить вьюху от вьюмодели.А может не нужно обнулять DataContext?
Это такая задачка на сообразительность? Как отцепить вью от вьюмодели, не обнуляя при этом DataContext?
Уважуха. По буддистски. Прям таки хлопок одной ладонью.

А вообще весело. Получается, что вот так вот писать нельзя:
Код: plaintext
1.
2.
view.DataContext = viewModel1;
// подрочили вприсядку
view.DataContext = viewModel2;
Надо писать вот так вот, а то башка снег попадёт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
view.DataContext = viewModel1;
// подрочили вприсядку
if (viewModel2 != null)
{
    // Какое щастье, можем сменить датаконтекст, и предыдущая вьюмодель не шевельнётся
    view.DataContext = viewModel2;
}
else
{
    // Какое нищастье :(
    Application.Shutdown();
}

Просто обнулить все ссылки на вьюху, убрать её из логического дерева - и она рано или поздно погибнет от рук равнодушного GC?
... и не дай то бог сотворить свою тупую реализацию ICommand, и прибиндить к ней кнопь. Тады равнодушный GC так и останется равнодушным. Вьюхи же будут плодиться как кролики, и жить как дунканы макклауды.
Ну ладно, я знаю, что так делать низзя. А ежели мне кирпич на голову упадёт, и на моё место придёт кто-то, кто этого не знает, и словей типа DelegateCommand ни разу в рот не брал?

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

Ну или подумать о DataTemplate.
В куда?
Действительно, самая главная загвоздка - это во, что думать?
1.При смене DataContext на другую ViewModel все прекрасно обновляется без твоих бубнов.
2.Ты наивно полагаешь, что при обнулении DataContext, GC тут же бросается делать уборку, и без этого никак нельзя?
Учи матчать.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703669
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've1.При смене DataContext на другую ViewModel все прекрасно обновляется без твоих бубнов.
Ага, только при смене DataContext не на другую ViewModel, а на null - всё обновляется далеко не прекрасно.

2.Ты наивно полагаешь, что при обнулении DataContext, GC тут же бросается делать уборку, и без этого никак нельзя?
Для тупых повторяю.
Без обнуления DataContext (простым убиванием своих ссылок на вью) - GC ваапсче не проснётся, если ему чуть-чуть помочь с ICommand

Учи матчать.
Чего там с пропертёй у селектора, учёный ты наш? :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703870
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПi've1.При смене DataContext на другую ViewModel все прекрасно обновляется без твоих бубнов.
Ага, только при смене DataContext не на другую ViewModel, а на null - всё обновляется далеко не прекрасно.

2.Ты наивно полагаешь, что при обнулении DataContext, GC тут же бросается делать уборку, и без этого никак нельзя?
Для тупых повторяю.
Без обнуления DataContext (простым убиванием своих ссылок на вью) - GC ваапсче не проснётся, если ему чуть-чуть помочь с ICommand

Учи матчать.
Чего там с пропертёй у селектора, учёный ты наш? :)

1. Для особо одаренных юных гениев повторяю, только придурки это делают. Найди хотя бы один пример из вменяемого источники, где процветает подобный маразм.
2.Ты не перегрелся на солнце? GC теперь еще и ICommand нужен! У тебя полная каша в голове.
3.Загляни хотя бы раз в документацию или еще сам жевать не научился?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703895
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPF1. Для особо одаренных юных гениев повторяю, только придурки это делают. Найди хотя бы один пример из вменяемого источники, где процветает подобный маразм.
Т.е. view.DataContext = null - делать низзя? Никак никогда низачем?

2.Ты не перегрелся на солнце? GC теперь еще и ICommand нужен! У тебя полная каша в голове.
Ты парусске панимаишь?
GC ICommand не нужен.
Примитивная (но совершенно легитимная) реализация ICommand, прибиндиная к кнопке во вьюхе, не позволит GC собрать view
(если предварительно не сделать view.DataContext = null, а делать так нельзя, потому что смотри п.1. )

3.Загляни хотя бы раз в документацию или еще сам жевать не научился?
Панятна, слив засчитан.
В следующий раз будешь проходить мимо - проходи дальше.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36703952
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I've WPF тынц или http://%5DDesignTimeResourceDictionary%5B/url], или ComponentResourceKey

I've WPF 2.DesignTimeResourceDictionary или 3.DesignTimeResourceDictionary in Blend , или 4.ComponentResourceKey Ценю твой труд по поиску ссылок, но, к сожалению, ничего нового.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704020
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПI've WPF1. Для особо одаренных юных гениев повторяю, только придурки это делают. Найди хотя бы один пример из вменяемого источники, где процветает подобный маразм.
Т.е. view.DataContext = null - делать низзя? Никак никогда низачем?

2.Ты не перегрелся на солнце? GC теперь еще и ICommand нужен! У тебя полная каша в голове.
Ты парусске панимаишь?
GC ICommand не нужен.
Примитивная (но совершенно легитимная) реализация ICommand, прибиндиная к кнопке во вьюхе, не позволит GC собрать view
(если предварительно не сделать view.DataContext = null, а делать так нельзя, потому что смотри п.1. )

3.Загляни хотя бы раз в документацию или еще сам жевать не научился?
Панятна, слив засчитан.
В следующий раз будешь проходить мимо - проходи дальше.
Если ты MCУ или его клон, то с этого нужно было начинать. Это уже обсуждалось. В сад, тупица.Только у тебя с этим проблемы.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704039
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПНу или подумать о DataTemplate.
В куда?Ну ты пихаешь свою вьюмодель прамо в контейнер (myContentControl.Content = myViewModel). Удаляешь оттуда когда надо (myContentControl.Content = null) и вьюха чудом удаляется сама собой. Правда все ICommand-ы должны быть кошерными. Но это уже прописная истина, которую должен знать каждый.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704144
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Алексей К
ЛПНу или подумать о DataTemplate.
В куда?Ну ты пихаешь свою вьюмодель прамо в контейнер (myContentControl.Content = myViewModel). Удаляешь оттуда когда надо (myContentControl.Content = null) и вьюха чудом удаляется сама собой.
Оно в реальности чуть-чуть не так, но положим.
При чём здесь DataTempate, я не понял?
Пусть надо сменить одну вьюху на другую, при неизменной вьюмодели. Куда мне сдался DataTemplate?

Правда все ICommand-ы должны быть кошерными. Но это уже прописная истина, которую должен знать каждый.
Command'ы кошерные, Behavior'ы кошерные, хер его знает что еще кошерные... Положим знаю я это. Буду жить вечно, гарантирую работодателю, что никуда не захочу уйти, и он мне тоже гарантирует, что я никуда не захочу уйти. Гвоздём к монитору прибью бумажку для потомков "Не вздумай с**а реализовывать свою ICommand, ниасилишь, горя хапнешь".
А как это влияет на то, что у меня в один момент времени живет две вьюхи, прибинденые к одной вьюмодели, и одна из этих вьюх хрен пойми когда соберётся GC с неразберипойми какими побочными эффектами?

----------------------------

2 i've
Ты еще не отыскал пропертю у селектора? Ну иди ищи, болезный :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704196
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 Алексей К
ЛПНу или подумать о DataTemplate.
В куда?Ну ты пихаешь свою вьюмодель прамо в контейнер (myContentControl.Content = myViewModel). Удаляешь оттуда когда надо (myContentControl.Content = null) и вьюха чудом удаляется сама собой.
Оно в реальности чуть-чуть не так, но положим.
При чём здесь DataTempate, я не понял?
Пусть надо сменить одну вьюху на другую, при неизменной вьюмодели. Куда мне сдался DataTemplate?

Правда все ICommand-ы должны быть кошерными. Но это уже прописная истина, которую должен знать каждый.
Command'ы кошерные, Behavior'ы кошерные, хер его знает что еще кошерные... Положим знаю я это. Буду жить вечно, гарантирую работодателю, что никуда не захочу уйти, и он мне тоже гарантирует, что я никуда не захочу уйти. Гвоздём к монитору прибью бумажку для потомков "Не вздумай с**а реализовывать свою ICommand, ниасилишь, горя хапнешь".
А как это влияет на то, что у меня в один момент времени живет две вьюхи, прибинденые к одной вьюмодели, и одна из этих вьюх хрен пойми когда соберётся GC с неразберипойми какими побочными эффектами?

----------------------------

2 i've
Ты еще не отыскал пропертю у селектора? Ну иди ищи, болезный :)

Я ее давно нашел.
Многоликий ты наш, придет другой, у работодателя сразу все образуется, без гвоздей и бумажек.
Просто диву даешься, в каком кол-ве и беспорядке разбросан мусор в твоей голове.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704200
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 i've
Тебе нечего сказать по теме?
Иди отсюда, флудераст.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704270
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не смеши, весь этот топик - один сплошной флуд. Мальчики кое-как научились ездить на велосипеде Winform, пытаются пересесть на WPF, но у него педали в другом месте и их самоделкинские колеса к нему не подходят.Сучат ножками в пустоте, не могут их найти, кричат: "Ай-яй, какой неправильный велосипед!!!".А инструкцию прочесть им лень,ведь они уже и так большие и грамотные
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704401
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i'veМальчики кое-как научились ездить на велосипеде Winform, пытаются пересесть на WPF
SeVa, он же СервладЪ, он же недоученный евангелистЪ, .... пачтидаун детектед
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704786
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПОно в реальности чуть-чуть не так, но положим.
При чём здесь DataTempate, я не понял?
Пусть надо сменить одну вьюху на другую, при неизменной вьюмодели. Куда мне сдался DataTemplate?Меняешь DataTemplate на другой. DataTemplateSelector опять же...
ЛППравда все ICommand-ы должны быть кошерными. Но это уже прописная истина, которую должен знать каждый.А как это влияет на то, что у меня в один момент времени живет две вьюхи, прибинденые к одной вьюмодели, и одна из этих вьюх хрен пойми когда соберётся GC с неразберипойми какими побочными эффектами?Ну когда появятся побочные эффекты - тогда и будеш разгребать. Чё раньше времени проблему создавать?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704800
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Алексей К
Меняешь DataTemplate на другой. DataTemplateSelector опять же...
Та што ш такое...
Куда дататемплейт? Зачем дататемплейт?
Есть вьюха раз, есть вьюха два. Куда темплейт засунуть?

У меня нет такой проблемы - "как бы мне исхитриться одни и те же данные по разному отобразить". Для решения этой задачи собственно вьюхи и имеются. Разные отображения - разные вьюхи.
У меня нет такой проблемы - "как бы мне разные вьюхи исхитриться нарисовать где-то на экране". Могу руками их в какой-нибудь контентконтрол засунуть, могу ногами через какой-нибудь регионманагер протолкнуть. Суть то не в том.

Ну когда появятся побочные эффекты - тогда и будеш разгребать. Чё раньше времени проблему создавать?
Ничего, что когда проблемы появятся, я за неделю на оленях не доеду дотуда, где их придётся разгребать?

Есть вьюха, используется для отображения. Перестала использоваться для отображения - ну и в топку её. Оторвать ей всю связь с внешним миром, и пусть себе в памяти висит, ждёт прихода GC. Её там хоть насквозь перекорёжить может всю, не страшно, ибо она уже ни к чему не привязана, живёт своей жизнью в ожидании своей смерти.
По моему вполне кошерный подход.

Ты предлагаешь не отвязывать её от всего остального, дескать авось прокатит, авось ничего страшного не случится. Так вот у меня нет уверенности в том, что ничего страшного не случится. Я вон вижу, что вьюха уже на ровном месте обсираться умудряется, на строчке view.DataContext=null. Она живёт то еле-еле, а уж как будет умирать - ваапсче неизвестно. И будет ли она спокойно дожидаться своей смерти вплоть до прихода GC, или у неё еще какие бзики начнутся - не знаю, и, в общем-то, надеюсь никогда этого не узнать.

На "авось" программировать как то не хочецо. Есть локализованное место в коде, где безболезненно отцепить вьюху можно - значит в этом месте безболезненно отцепить вьюху нужно. Совсем безболезненно не получилось, возникли проблемы странные? Ну вот эти проблемы я потихоньку и решаю. Вовсе не "раньше времени", а как только, так сразу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704808
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Алексей К
Меняешь DataTemplate на другой. DataTemplateSelector опять же...
Та што ш такое...
Куда дататемплейт? Зачем дататемплейт?
Есть вьюха раз, есть вьюха два. Куда темплейт засунуть?
Ну DataTemplate и есть одно из проявлений View. Если у тебя уже есть UserControl - ну пихани его в DataTemplate. Когда произойдёт myContentControl.Content = null - умрёт DataTemplate, а вместе с ним и твой UserControl. Если я неправильно понял постановку задачи - не суди строго. :-))

ЛПНу когда появятся побочные эффекты - тогда и будеш разгребать. Чё раньше времени проблему создавать?
Ничего, что когда проблемы появятся, я за неделю на оленях не доеду дотуда, где их придётся разгребать?Предполагаю, что если будут проблемы - они вылезут сразу. Оленей запрячь не успееш.

ЛПЕсть вьюха, используется для отображения. Перестала использоваться для отображения - ну и в топку её. Оторвать ей всю связь с внешним миром, и пусть себе в памяти висит, ждёт прихода GC. Её там хоть насквозь перекорёжить может всю, не страшно, ибо она уже ни к чему не привязана, живёт своей жизнью в ожидании своей смерти.
По моему вполне кошерный подход.

Ты предлагаешь не отвязывать её от всего остального, дескать авось прокатит, авось ничего страшного не случится. Так вот у меня нет уверенности в том, что ничего страшного не случится. Я вон вижу, что вьюха уже на ровном месте обсираться умудряется, на строчке view.DataContext=null. Она живёт то еле-еле, а уж как будет умирать - ваапсче неизвестно. И будет ли она спокойно дожидаться своей смерти вплоть до прихода GC, или у неё еще какие бзики начнутся - не знаю, и, в общем-то, надеюсь никогда этого не узнать.

На "авось" программировать как то не хочецо. Есть локализованное место в коде, где безболезненно отцепить вьюху можно - значит в этом месте безболезненно отцепить вьюху нужно. Совсем безболезненно не получилось, возникли проблемы странные? Ну вот эти проблемы я потихоньку и решаю. Вовсе не "раньше времени", а как только, так сразу.Бретанские учоные доказали, что DataBinding в WPF сделан по уму. Предположительно, биндинги отписываются от PropertyChanged вьюмодели при отсоединении от логического дерева (FrameworkElement.Unload event). Или там всё замучено через Weak Event Pattern, не столь важно. Если бездумно самому не подписываться из вью на события вьюмодели, а делать всё через биндинги - проблем быть не должно.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704812
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯИли там всё замучено через Weak Event Pattern, не столь важноСкорее всего именно так. В противном случае зачем в MSDN болтается описание System.ComponentModel.PropertyChangedEventManager.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704840
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мусичка,его тупологоловые клоны в тапочках и прочие инкарнации, уж вам ли рассуждать о банах?
Относительно ваших визгов о сырости wpf с отсутствием IDisposable:
1. Разработчики wpf сознательно от него отказались и перешли на cлабые ссылки, тк контролам нечего диспозить(у них не должно быть handler'oв и неуправляемых ресурсов). Единственное о чем нужно беспокоится - на него не должно быть ссылок
2. В Dispose можно забыть сделать отписку(это ты и делаешь, в силу своей тупости, полагая, что Winforms сама этим занимается).Ничего подобного она не делает.
Вы привыкли только к контролам, а wpf можно и нужно управлять закрытием через viewmodel. Просто колеса находятся не там и можно ехать не задом на перед.
Если не можете осилить новое, то никто вам не виноват.
ЗЫ PropertyChanged реализован через WeakReference
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704854
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpfЗЫ PropertyChanged реализован через WeakReferencePropertyChanged реализует кто как хочет. А вот подписка на него в Binding реализована через Weak Event. Чего не сделано в подписке на ICommand.CanExecuteChanged.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704859
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Алексей К
Бретанские учоные доказали, что DataBinding в WPF сделан по уму.
Конечно, конечно.
Датабиндинг в WPF сделан по уму.
А я тут наверное рендеринг фонтов обсуждаю, а вовсе не косяки в датабиндинге :)

Предположительно, биндинги отписываются от PropertyChanged вьюмодели при отсоединении от логического дерева (FrameworkElement.Unload event). Или там всё замучено через Weak Event Pattern, не столь важно.
Да кто ж тебе такую глупость сказал?
Отписывались бы биндинги - не было бы проблем, например, с ICommand. Это как минимум.
Конечно же не отписываются.
Да еще и мне не дают корректно отписаться.

Делов на пять минут, возьми да проверь, отписываются биндинги или нет.
У меня вот выгруженная (но пришпиленная в памяти) вюха очень даже хорошо тянет в себя все изменения вьюмодели. И в себя тянет, и из себя выплёвывает, если её не отцепить от вьюмодели. Чего я сделать корректно не могу из за косяков датабиндинга.

Не знаю уж как там у британских ученых.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704872
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППредположительно, биндинги отписываются от PropertyChanged вьюмодели при отсоединении от логического дерева (FrameworkElement.Unload event). Или там всё замучено через Weak Event Pattern, не столь важно. Да кто ж тебе такую глупость сказал?
Отписывались бы биндинги - не было бы проблем, например, с ICommand. Это как минимум.
Просто у коммандов свои механизмы, не использующие датабиндинг. С этим придётся смириться и жить дальше. Тем более, все берут готовый DelegateCommand и не парятся по этому поводу.
ЛПНе знаю уж как там у британских ученых.Кстати, бретанские учёные установили .Net 4 и описанных тобой проблем не наблюдают. Проверь.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704874
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpf1. Разработчики wpf сознательно от него отказались и перешли на cлабые ссылкиЗря.
i've wpf, тк контролам нечего диспозить(у них не должно быть handler'oв и неуправляемых ресурсов).Отписка от событий - одна из задач Dispose.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704881
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 Алексей К
Бретанские учоные доказали, что DataBinding в WPF сделан по уму.
Конечно, конечно.
Датабиндинг в WPF сделан по уму.
А я тут наверное рендеринг фонтов обсуждаю, а вовсе не косяки в датабиндинге :)

Предположительно, биндинги отписываются от PropertyChanged вьюмодели при отсоединении от логического дерева (FrameworkElement.Unload event). Или там всё замучено через Weak Event Pattern, не столь важно.
Да кто ж тебе такую глупость сказал?
Отписывались бы биндинги - не было бы проблем, например, с ICommand. Это как минимум.
Конечно же не отписываются.
Да еще и мне не дают корректно отписаться.

Делов на пять минут, возьми да проверь, отписываются биндинги или нет.
У меня вот выгруженная (но пришпиленная в памяти) вюха очень даже хорошо тянет в себя все изменения вьюмодели. И в себя тянет, и из себя выплёвывает, если её не отцепить от вьюмодели. Чего я сделать корректно не могу из за косяков датабиндинга.

Не знаю уж как там у британских ученых.
1 Выше имелось ввиду, что обработка именений реализована через слабые ссылки.
2. Нисколько не сомневаюсь, что у тебя все вьюхи работают через одно место, которым ты привык думать. WPF гораздо больше возможностей накосячить, с твоими способностями косяки будут не в квадратах.Твоя полова,которую ты демострировал, прекрасное тому подтверждение.
Оставайтесь на winforms, не тужтесь
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704882
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПНе знаю уж как там у британских ученых.Кстати, бретанские учёные установили .Net 4 и описанных тобой проблем не наблюдают. Проверь.
Алексей, я то как раз проверил. В отличие от тебя, поверившего британским ученым на слово.
Тянет выгруженная вьюха изменения из вьюмодели. В FW 4.0.
Единственное, чем в данном вопросе поможет FW 4.0 - там можно корректно отписаться самому, без лишних шевелений вьюмодели.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704886
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сева, я тебя сегодня еще не посылал нах?
Иди, ищи пропертю у селектора, которой обуславливаются такие глюки датабиндингов :))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704888
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПросто у коммандов свои механизмы, не использующие датабиндинг. С этим придётся смириться и жить дальше. Тем более, все берут готовый DelegateCommand и не парятся по этому поводу.А вот если бы ICommand выглядел бы как-то так:
Код: plaintext
1.
2.
3.
4.
interface ICommand : INotifyPropertyChanged
{
    void Execute();
    bool Enabled { get; }
}
в контролах можно было бы применить имеющийся кошерный Binding. Но этого не произошло из-за наличия CommandParameter, который накер никому не упёрся в рамках концепции эмвэвээм.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704918
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гнидка он же МСУ, это единственное, что ты умеешь делать(и то бездарно).Пойми одну простую вещь - ты действительно не ошибался, когда подписывался ЧМОм, отложи в сторону свой дерьмокод, возми нормальный framework, попробуй найти в нем утечки, если найдешь, то тебе скажут спасибо и тут же исправят.Может быть что-то и поймешь, а демострировать свою тупость в форуме не нужно, никто тебе не виноват, что родители бракоделы
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704933
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПЕдинственное, чем в данном вопросе поможет FW 4.0 - там можно корректно отписаться самому, без лишних шевелений вьюмодели.Ну я о том и говорю, что в .Net 4 можно безболезненно view.DataContext = null.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704944
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПЕдинственное, чем в данном вопросе поможет FW 4.0 - там можно корректно отписаться самому, без лишних шевелений вьюмодели.Ну я о том и говорю, что в .Net 4 можно безболезненно view.DataContext = null.
Да нет, я так понял, что ты пытался меня убедить в том, что и делать этого не надо, потому что всё тип-топ. Типа выгрузил вьюху, и всё, можно больше ни о чём не беспокоиться, мудрые разработчики сами отцепили биндинги на событии Unload, и потому как бы там вьюху не сколбасило, оно уже ничему не повредит. Это не так. И в 3.5 не так, и в 4.0 не так.

А то, что в 4.0 можно безболезненно делать view.DataContext = null - дык это я и сам уже тут писал. Толку то от этого. Мне надо в 3.5 :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704955
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПДа нет, я так понял, что ты пытался меня убедить в том, что и делать этого не надо, потому что всё тип-топ. Типа выгрузил вьюху, и всё, можно больше ни о чём не беспокоитьсяНу я до сих пор придерживаюсь такого мнения. Переубеждать тебя не собираюсь.
ЛП, мудрые разработчики сами отцепили биндинги на событии UnloadТам на Weak Event-ах.
ЛПА то, что в 4.0 можно безболезненно делать view.DataContext = null - дык это я и сам уже тут писал.Сори, не заметил.
ЛПТолку то от этого. Мне надо в 3.5 :)Сопереживаю. :-))
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36704989
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Алексей К
Там на Weak Event-ах.
Да хоть на паровой тяге : )

Вьюха живая? Живая. Выгруженная, но живая. Пока к ней GC не пришел. А когда он придёт - неведомо.
Биндинги живые? Живые, раз уж никто не удосужился их убить.
Обмен между вьюхой и вьюмоделью идёт? Куда ж он денется.
Чего там с вьюхой может произойти - хз. Но британские ученые утверждают, что всё пучком.

Ну я до сих пор придерживаюсь такого мнения.
Это очень хорошее мнение.

- Как отцепить вью от вьюмодели?
- Зачем?
- Во избежание проблем.
- А никаких проблем нет и не может быть.
- Абасрацо. Если никаких проблем нет и быть не может, то почему же с отцеплением вьюхи проблемы есть? Ведь их не может быть?

Как то примерно вот так вот получается

Впрочем, тоже не собираюсь тебя переубеждать.
Программирование на авось - тоже неплохой вариант.
Вероятностное программирование, так сказать :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705016
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Алексей К
Там на Weak Event-ах.
Да хоть на паровой тяге : )А вот это вот очень важно.

ЛПВьюха живая? Живая. Выгруженная, но живая. Пока к ней GC не пришел. А когда он придёт - неведомо. Биндинги живые? Живые, раз уж никто не удосужился их убить.
Обмен между вьюхой и вьюмоделью идёт? Куда ж он денется.
Чего там с вьюхой может произойти - хз. Но британские ученые утверждают, что всё пучком.Ну ты сам прикинь. Вьюха не в графе достижимых объектов и ждёт прихода беспощадного GC. Биндинги не будут реагировать на PropertyChanged, потому что Weak Event.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705055
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППрограммирование на авось - тоже неплохой вариант.
Вероятностное программирование, так сказать :)А без строгой типизации, которая нынче пропагандируется в XAML, только это и остаётся.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705159
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 Алексей К
Там на Weak Event-ах.
Да хоть на паровой тяге : )

Вьюха живая? Живая. Выгруженная, но живая. Пока к ней GC не пришел. А когда он придёт - неведомо.
Биндинги живые? Живые, раз уж никто не удосужился их убить.
Обмен между вьюхой и вьюмоделью идёт? Куда ж он денется.
Чего там с вьюхой может произойти - хз. Но британские ученые утверждают, что всё пучком.

Ну я до сих пор придерживаюсь такого мнения.
Это очень хорошее мнение.

- Как отцепить вью от вьюмодели?
- Зачем?
- Во избежание проблем.
- А никаких проблем нет и не может быть.
- Абасрацо. Если никаких проблем нет и быть не может, то почему же с отцеплением вьюхи проблемы есть? Ведь их не может быть?

Как то примерно вот так вот получается

Впрочем, тоже не собираюсь тебя переубеждать.
Программирование на авось - тоже неплохой вариант.
Вероятностное программирование, так сказать :)
Пустопорожний бред недоумка, которому, если что-то попадет в головешку, то выскочит минимум через год. Возьми нормальный фреймворк и приведи доказательства своему бреду, что вьюхи продолжают реагировать на изменения в viewmodel. Это только у тебя может быть.
Если тебе так уж приспичило, то посмотри caliburn, в нем управление жизненным циклом идет полностью через viewmodel, можешь спокойно и внятно отписываться от своего дерьмокода, если больше нечем занятся.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705278
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Алексей К
А вот это вот очень важно.
...
Ну ты сам прикинь. Вьюха не в графе достижимых объектов и ждёт прихода беспощадного GC. Биндинги не будут реагировать на PropertyChanged, потому что Weak Event.
Алексей, вот ты сам это проверял, или опять британским ученым поверил?
Только честно?

--------------------

2 Сева
Пустопорожний бред недоумка, которому, если что-то попадет в головешку, то выскочит минимум через год. Возьми нормальный фреймворк и приведи доказательства своему бреду, что вьюхи продолжают реагировать на изменения в viewmodel. Это только у тебя может быть.
Если тебе так уж приспичило, то посмотри caliburn, в нем управление жизненным циклом идет полностью через viewmodel, можешь спокойно и внятно отписываться от своего дерьмокода, если больше нечем занятся.
Тебе, невменяемый, еще и доказательства какие-то нужны?
Ты еще домашнее задание не сделал.
Иди, ищи пропертю во селекторе, которая отвечает за глюки датабиндинга :)
Как найдёшь - поговорим.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705406
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 Алексей К
А вот это вот очень важно.
...
Ну ты сам прикинь. Вьюха не в графе достижимых объектов и ждёт прихода беспощадного GC. Биндинги не будут реагировать на PropertyChanged, потому что Weak Event.
Алексей, вот ты сам это проверял, или опять британским ученым поверил?
Только честно?

--------------------

2 Сева
Пустопорожний бред недоумка, которому, если что-то попадет в головешку, то выскочит минимум через год. Возьми нормальный фреймворк и приведи доказательства своему бреду, что вьюхи продолжают реагировать на изменения в viewmodel. Это только у тебя может быть.
Если тебе так уж приспичило, то посмотри caliburn, в нем управление жизненным циклом идет полностью через viewmodel, можешь спокойно и внятно отписываться от своего дерьмокода, если больше нечем занятся.
Тебе, невменяемый, еще и доказательства какие-то нужны?
Ты еще домашнее задание не сделал.
Иди, ищи пропертю во селекторе, которая отвечает за глюки датабиндинга :)
Как найдёшь - поговорим.
Придурок, если ты в документации одно свойство найти не можешь, то о чем ты еще рассуждать берешься? А там достаточно внятно описан алгоритм работы, только для тебя здесь непонятки и "неправильный" биндинг. Иди мыть полы, как тебе уже советовалось
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705426
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Сева
Конечно не могу свойство найти.
Это ведь очень секретное свойство.
О нём вообще никто не знает, кроме тебя.
Правда, Сева?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705504
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП2 Сева
Конечно не могу свойство найти.
Это ведь очень секретное свойство.
О нём вообще никто не знает, кроме тебя.
Правда, Сева?
О IsSynchronizedWithCurrentItem, полная тупица, не знаешь только ты.
Это говорит только о том, что полный пробел в познаниях.wpf работает совершенно иначе, чем тебе представляется, в силу уровня ниже канализации.
В документации сказано:

null if the SelectedItem is synchronized with the current item only if the Selector uses a CollectionView. The default value is null.

Попробуй объяснить почему срабатывает синхронизация, если у тебя нет CollectionView.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705648
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП2 Алексей К
А вот это вот очень важно.
...
Ну ты сам прикинь. Вьюха не в графе достижимых объектов и ждёт прихода беспощадного GC. Биндинги не будут реагировать на PropertyChanged, потому что Weak Event.
Алексей, вот ты сам это проверял, или опять британским ученым поверил?
Только честно?Нет, не проверял. Просто мнение учоных совпадает с моими знаниями теории. Если это не так - я сильно удивлюсь. :-))

ЗЫ: Я потом обязательно проверю. Сейчас чё-то лень...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705656
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i'veЛП2 Сева
Конечно не могу свойство найти.
Это ведь очень секретное свойство.
О нём вообще никто не знает, кроме тебя.
Правда, Сева?
О IsSynchronizedWithCurrentItem, полная тупица, не знаешь только ты.
Это говорит только о том, что полный пробел в познаниях.wpf работает совершенно иначе, чем тебе представляется, в силу уровня ниже канализации.
В документации сказано:

null if the SelectedItem is synchronized with the current item only if the Selector uses a CollectionView. The default value is null.

Попробуй объяснить почему срабатывает синхронизация, если у тебя нет CollectionView.
ой дурачок

Севка, тебе следующее домашнее задание.
Из шести частей.
По очереди установить комбобоксу свойство IsSynchronizedWithCurrentItem в True, False, {x:Null}
Проверить, происходит ли обнуление пропертей вьюмодели при выполнении строчки view.DataContext = null
После этого поменять во вьюмодели IEnumerable<String> на CollectionView
По очереди установить комбобоксу свойство IsSynchronizedWithCurrentItem в True, False, {x:Null}
Проверить, происходит ли обнуление пропертей вьюмодели при выполнении строчки view.DataContext = null

О результатах доложишь.
Особенно если хотя бы в одном из этих вариантов обнуления происходить не будет (в FW 3.5)

Как сделаешь домашнее задание, так сразу можешь начинать перелопачивать документацию в поисках еще какого-нибудь свойства селектора, которое могло бы повлиять на глюки датабиндинга
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705666
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНет, не проверял.
А зря.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705678
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПАлексей КНет, не проверял.
А зря.Ты меня пугаешь.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705767
I've WPF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То, что ты не ответишь было понятно сразу. Твой подход в этом и заключается - тупое бросание камушков в колодец с изучением какое буль будет в ответ. Но только такой подход не работает, ты даже не знаешь, что нужно бросать. Для wpf, тупица, можно ограничится всего двумя вариантами, тк null всегда = true. Почему это так, для тебя будет загадкой всегда.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705777
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offЭпический патриот Севка опять рвёт правду-матку?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36705878
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

скорее просто бредит
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36707253
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПАлексей КНет, не проверял.
А зря.Ты был прав. Вот сцуки. Отписка биндингов от PropertyChanged походу происходит в финализаторе. GC.Collect рулит.

ЗЫ: Я был лучшего мнения о WeakEventManager...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36707271
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЗЫ: Я был лучшего мнения о WeakEventManager...Был неправ. Так и должно работать...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36707278
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПI've WPFСвойство я уже озвучил
Ну теперь делай своё домашнее задание, ищи значение этого свойства, при котором не будет происходить обнуление свойств вьюмодели при обнулении датаконтекста вьюхи.
Это ведь твои слова: "у селекторов есть одно замечательное свойство,которое обуславливает подобное поведение"? Твои.
Свойство ты назвал? Ты.
Вот и давай, используй это свойство чтобы от подобного поведения избавиться.
Когда с домашним заданием справишься - начинай копать документацию в поисках нового свойства, "которое обуславливает подобное поведение"

Господи, прости меня грешного, негоже над убогими смеяться...

ЧМО, не твой ли это шедевр
Код: plaintext
1.
2.
3.
 var view = ContentControl1.Content as FrameworkElement;
        // При исполнении следующей строчки идёт обнуление св-ва SelectedItem у вьюмодели
        if(view!=null) view.DataContext = null;
        ContentControl1.Content = null;
Такие домашние задания можно встретить только в школе для дебилов. Но, думаю, и туда тебя не взяли.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36708488
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЛПАлексей КНет, не проверял.
А зря.Ты был прав. Вот сцуки.
Ну, видишь как хорошо.
Вьюха выгружена и недосягаема, но живёт где-то там с астрале своей полноценной жизнью. Биндинги работают, нотификейшены нотифицируют. Данные вытягиваются из реального мира. Глючные комбобоксы срут в реальный мир через работающие биндинги. Непонятно когда приходит мусорщик, и начинает разные вьюхи по кусочкам обгладывать, в недетерминированном порядке. Полуобглоданные глючные комбобоксы полуобглоданной глючной вьюхи продолжают срать через полуобглоданные глючные биндинги. Британские ученые доказывают, что всё нормально. Программист верит британским ученым, и считает, что нет необходимости рвать связь вьюхи и вьюмодели, достаточно отцепить её от визуального дерева, и станет всё хорошо. В подмастерьях у программиста бегает севка, считающий, что если чего не хорошо, то это определяется пропертёй селектора. Так и строятся высоконадёжные системы. Всемирная история, банк Империал.
Йа лублу ВПФ.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36708649
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, достоинств много, но баги в самом главном. В топку такие продукты...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36708664
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДа, достоинств много, но баги в самом главном. В топку такие продукты...
Зубов бояться - в рот не давать. Покажи мне продукт без багов.

Главное - британским ученым на слово не верить, а там всё приложится.
На аспнете то совсем противно, как и на винформах, так что при всём богатстве выбора...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36708829
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛППокажи мне продукт без багов.
Ну-ка, отпостите мне баги в ASP.NET платформе. Особенно, интересуют серьезные баги типа утечек памяти.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36708904
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЛППокажи мне продукт без багов.
Ну-ка, отпостите мне баги в ASP.NET платформе.
Зачем? Ты считаешь, что аспнет платформа свободна от багов вообще и от серьёзных в частности, и предлагаешь мне тебя в этом переубедить? Да занафига оно мне надо, считай, если хочешь.

Ты думаешь, что в ASP.Net платформе не было, нет, и не может быть багов. Это твоё право, так думать.
Алексей К вон думает, что в впф-овских датабиндингах не было, нет, и не может быть багов, и это тоже его право.
Вы наверно с одними и теми же британскими учеными общались, только на разные темы.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709143
i've wpf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛПАлексей КЛПАлексей КНет, не проверял.
А зря.Ты был прав. Вот сцуки.
Ну, видишь как хорошо.
Вьюха выгружена и недосягаема, но живёт где-то там с астрале своей полноценной жизнью. Биндинги работают, нотификейшены нотифицируют. Данные вытягиваются из реального мира. Глючные комбобоксы срут в реальный мир через работающие биндинги. Непонятно когда приходит мусорщик, и начинает разные вьюхи по кусочкам обгладывать, в недетерминированном порядке. Полуобглоданные глючные комбобоксы полуобглоданной глючной вьюхи продолжают срать через полуобглоданные глючные биндинги. Британские ученые доказывают, что всё нормально. Программист верит британским ученым, и считает, что нет необходимости рвать связь вьюхи и вьюмодели, достаточно отцепить её от визуального дерева, и станет всё хорошо. В подмастерьях у программиста бегает севка, считающий, что если чего не хорошо, то это определяется пропертёй селектора. Так и строятся высоконадёжные системы. Всемирная история, банк Империал.
Йа лублу ВПФ.

Бездоказательные,пустопорожние страшилки юного естествоиспытателя, который решил, что если у него протекает крыша, то и у всех так. Поставить к верху одним местом можно все, но из того, что японская бензопила не прожевала лом сибирских лесорубов, следует только то, что они му**ки.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709355
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i've wpfБездоказательные,пустопорожние страшилки юного естествоиспытателя, который решил, что если у него протекает крыша, то и у всех так. Поставить к верху одним местом можно все, но из того, что японская бензопила не прожевала лом сибирских лесорубов, следует только то, что они му**ки.
Эпический подмастерье, ты уже нашел, во что установить пропертю селектора?
Если нет, то и сдрисни отсюда :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709374
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гугузела форумная, какую еще страшилку на ночь для МСУ придумал? При кривых могзах и руках остается только списывать свою нерадивость на других. XAMl расширяем, давно бы уже сделал свой вариант (это делали в SL 2.0 из-за неполной реализации Сombox) по Кащенко и ощасливил бы всех остальных.
Покажи свое дерьмишко с шевеленками и убитыми вьюшками, а лучше попроси увеличить дозу у лечащего врача
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709387
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поковырялся в твоем дерьмишке.Наблюдается следующее
Код: plaintext
1.
   public IEnumerable<String> Items { get; private set; }
 
Даже старшие помощники младшего асинизатора знают, что для нормального биндинга все должно быть Observable. Тк
àâòîð
There is an issue where WPF checks to find things that implement INotifyProperyChanged. If there is a databinding to something not implementing this interface, then it makes a record in a global table. That record doesn't get cleaned up, as WPF has no way of checking when that DB record is no longer needed.

Из-за подобной тупости у тебя барабашки общаются с убитыми вью.
Все утечки давно подсчитаны и известны . О твоих шевеленках давно бы знали все и давно. За примером далеко ходить не нужно, утечку с template в SL 4.0 раскопали сразу.
Только полные бездари все сваливают на других, глюки есть везде, но всегда есть возможность их обойти.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709389
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты му**ло, не даешь возможности использовать слабые ссылки, а на них построен весь WPF
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709449
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i'veПоковырялся в твоем дерьмишке.
Гыгыг.
Судьба твоя такой, севка, в моих какашках ковыряться. На большее ты не годен.

Кстати, только что ты признал, что перед этим ты несколько дней рвал и метал даже не прочитав, о чём собственно речь идёт. А я то гадаю, где ты у меня во view какой-то код сумел увидеть

Наблюдается следующее
Код: plaintext
1.
   public IEnumerable<String> Items { get; private set; }
 
Даже старшие помощники младшего асинизатора знают, что для нормального биндинга все должно быть Observable. Тк
àâòîð
There is an issue where WPF checks to find things that implement INotifyProperyChanged. If there is a databinding to something not implementing this interface, then it makes a record in a global table. That record doesn't get cleaned up, as WPF has no way of checking when that DB record is no longer needed.


Сев, ты дебил? Вот только честно? С медицинской точки зрения?
Какое нахрен обзервабл? Для чего? Для коллекции, которая один раз задаётся, и больше никогда не меняется? Которая прибиндина к комбобоксу в режиме Mode=OneTime?
Ты дурак совсем, да?
Если совсем дурак - ну покопайся еще в моём дерьмишке, поменяй там IEnumerable<String> на ObservableCollection<String>. Заодно можешь и свойство селектора во что-нибудь поустанавливать. О результатах доложишь.
Песец, блин. Цирк уехал, клоуны остались.

Из-за подобной тупости у тебя барабашки общаются с убитыми вью.
Барабашки общаются с убитыми вью даже без каких-либо коллекций. Через какое-нибудь проперти типа System.Int32 совершенно точно так же общаются. Или ты и на System.Int32 предлагаешь ObservableCollection повесить? Ну повесь, всё равно ж не поможет.

Ты му**ло, не даешь возможности использовать слабые ссылки, а на них построен весь WPF
Мудило здесь только ты, причём катастрофически эпическое
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709461
это слив
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛП
адназначна!
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36709554
i've
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно, в одну сторону. Не ожидал, что за забором это знают, а дальше ковыряться было лениво(ты свое дерьмишко, как и клон, стыдливо крестиками прикрываешь).
Еще раз повторяю, если только у тебя водятся барабашки, покажи код или обращайся к лечащему врачу,а страшилки, рассказывай соседям по больничной койке.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710062
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Для удаления биндинга есть спец методы - ClearAllBinding & ClearBinding, а не твои удары веслом по голове своих контролов.
У таких "оптимизаторов" с шаловливыми ручками, которые даже документацию не читают, как правило, ничего не работает, тогда они начинают искать козявки в чужом носу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710065
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iДля удаления биндинга есть спец методы - ClearAllBinding & ClearBinding
Вась, ты дурак, да?
А если потом эту вьюху (бездарно покуроченную) понадобится к другому датаконтексту прикрепить, что делать прикажешь? Пришивать биндинги обратно?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710066
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ЛПiДля удаления биндинга есть спец методы - ClearAllBinding & ClearBinding
Вась, ты дурак, да?
А если потом эту вьюху (бездарно покуроченную) понадобится к другому датаконтексту прикрепить, что делать прикажешь? Пришивать биндинги обратно?

Вот с этого и начинал бы сразу. Теперь понятно откуда у тебя "шевеленки" c якобы "убитыми" view.
"Оптимизатор", ты полный кретин.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710069
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iЛПiДля удаления биндинга есть спец методы - ClearAllBinding & ClearBinding
Вась, ты дурак, да?
А если потом эту вьюху (бездарно покуроченную) понадобится к другому датаконтексту прикрепить, что делать прикажешь? Пришивать биндинги обратно?

Вот с этого и начинал бы сразу.
Вась, ты не дурак, ты дебил. Еще и читать не умеешь.

Я с самого начала и сказал, что мне надо отцепить вьху от вьюмодели.
На вопрос "зачем" так и ответил - "или для того, чтобы прицепить её к другой вьюмодели, или для того, чтобы она просто померла спокойно"
Предложенное "не делать ничего" очевидно не подходит для случая, когда вьюхе предстоит просто спокойно помереть (она будет шевелиться вслед за вьюмоделью).
Предложенное "покромсать все биндинги" - эт ваще дураком надо быть. Разумеется не подходит, если вьюхе суждено быть прицепленной к другой вьюмодели.

Единственное, что мне нужно - сделать view.DataContext = null без побочных эффектов.
Всё, не надо мне больше ничего. Не надо мне херить коллекцию биндингов у вьюхи.
Если до тебя это только что долшло, то я рад за тебя.
Песец, блин, жираф подмастерье.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710074
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Гугузела, единственное, что тебе нужно сделать - обратиться к врачу. Подобный бред только там обсуждать нужно. В сад, "оптимизатор"
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710079
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Севка, по теме есть чего сказать?
Если нечего, то и сдристни отседова.
Иди, ищи пропертю у селектора :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710095
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ЛузерокПолнейший, попробуй обработать еще дустом подлых барабашек
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710633
Фотография Хопа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iЛПiДля удаления биндинга есть спец методы - ClearAllBinding & ClearBinding
Вась, ты дурак, да?
А если потом эту вьюху (бездарно покуроченную) понадобится к другому датаконтексту прикрепить, что делать прикажешь? Пришивать биндинги обратно?

Вот с этого и начинал бы сразу. Теперь понятно откуда у тебя "шевеленки" c якобы "убитыми" view.
"Оптимизатор", ты полный кретин.

Да, функциональный программист из него точно не выйдет.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710639
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Просто у меня уже прошел период, когда мальчики вырастают, уже достают до педалей, накрутили первые километры вокруг дома, и начинают из своего трехколесного велосипеда делать самый быстрый и легкий(с пеленок мечтали участвовать в Тур де Франс). Те детальки, которые удалось открутить, уродуют до неузнаваемости, обычно все ломают или забрасывают. Если ребенок упорный, то может быть, велосипед и поедет без половины деталей(для чего они он так и не понял), но до первой кочки(конструкция получилась хлипкая)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710666
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iПросто у меня уже прошел период, когда мальчики вырастают, уже достают до педалей, накрутили первые километры вокруг дома, и начинают из своего трехколесного велосипеда делать самый быстрый и легкий(с пеленок мечтали участвовать в Тур де Франс). Те детальки, которые удалось открутить, уродуют до неузнаваемости, обычно все ломают или забрасывают. Если ребенок упорный, то может быть, велосипед и поедет без половины деталей(для чего они он так и не понял), но до первой кочки(конструкция получилась хлипкая)
Севк, про тебя Даниил Хармс очень хорошо написал.
"Я не стал затыкать ушей. Все заткнули, а я один не заткнул, и потому я один все слышал. Я так же не закрывал тряпкой глаз, как это сделали все, и потому я все видел. Да, я один все видел и слышал. Но, к сожалению, я ничего не понял, значит, какая цена тому, что я один все видел и слышал. Я даже не мог запомнить того, что я видел и слышал. Какие-то отрывочные воспоминания, закорючки и бессмысленные звонки."

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

Кстати, ты уже нашел значение для проперти у селектора?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710702
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, Хармс верно описал нашего эпического героя :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710761
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Да, все я понял, ЛП, сам такой был, вылизывал милисикунды там,где не нужно, писал ассемблерные вставки и тд.
Со временем научишься не только ломать, если не будешь сидеть, как МСУ в резервации с надутыми щеками.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710812
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
МСУДа, Хармс верно описал нашего эпического героя :)
Хармс и тебя описал, твой башка ничего не страшно

Господин невысокого роста с камушком в глазу подошел к двери табачной лавки и остановился. Его черные, лакированные туфли сияли у каменной ступенечки, ведущей в табачную лавку. Носки туфель были направлены вовнутрь магазина. Еще два шага, и господин скрылся бы за дверью. Но он почему-то задержался, будто нарочно для того, чтобы подставить голову под кирпич, упавший с крыши. Господин даже снял шляпу, обнаружив свой лысый череп, и, таким образом, кирпич ударил господина прямо по голой голове, проломил черепную кость и застрял в мозгу. Господин не упал. Нет, он только пошатнулся от страшного удара, вынул из кармана платок, вытер им лицо, залепленное кровавыми мозгами, и, повернувшись к толпе, которая мгновенно собралась вокруг этого господина, сказал:
— Не беспокойтесь, господа: у меня была уже прививка. Вот видите — у меня в правом глазу торчит камушек. Это тоже был однажды случай. Я уже привык к этому. Теперь мне все трын-трава!
И с этими словами господин надел шляпу и ушел куда-то в сторону, оставив смущённую толпу в полном недоумении.

Кроличек у нас мальчик взрослее, у него уже другие интересы - велик должен быть самый красивый и удобный(нужно перед девочками выпендриться). С физикой у него проблемы, что к чему непонятно, поэтому выдрал только колеса, прилепил их к телеге с десятком других, любовно ее украсил всякими цацками. Педалей, естественно, не оказалось, пришлось самому впрягаться, разумеется, тоже нарядному и с ног до головы в медальках(любовно вырезанных шильдиках о прохождении всяческих тестов),как свадебная лошадь.
Бегает, MCУ, по улице с этой торбой и пристает ко всем, но только или он потный и вонючий, или конструкция вызывает подозрение, девченки не садятся.
С тех пор MCУ на них смертельно обиделся, дружит только с мальчиками
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710828
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iДа, все я понял, ЛП, сам такой был, вылизывал милисикунды там,где не нужно, писал ассемблерные вставки и тд.
Со временем научишься не только ломать, если не будешь сидеть, как МСУ в резервации с надутыми щеками.
Нет, Сев, ты в очередной раз нихера не понял :)
Я не занимаюсь оптимизацией. Не вылизываю миллисекунды, не пишу ассемблерных вставок, и прочей херотенью не заморачиваюсь. То, что я делаю - оно оказывает ровно обратный эффект с точки зрения "оптимизации", приложение получается чуть тяжелее, чуть медленнее. Но зато чуть надёжнее.

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

Ну а чего ж поделать, если имеющийся велосипед разваливается на кочках? Надо приварить трубу - буду приварить трубу, пусть оно и некрасиво. Хотелось бы по-красивее, конечно, но вот что-то в ответ на вопрос "как сделать покрасивее" приходится выслушивать, что дескать ничего делать не надо, британские учёные доказали, что велосипед на кочках не разваливается. А некоторые советчики так вообще три дня бубнят про "пропертю селектора", пытаясь убедить меня в том, что такое поведение (разваливание велосипеда на кочке) зависит от цвета заднего светоотражателя. Читайте дескать документацию к светоотражателю.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710851
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Еще одно условие для того, чтобы научится усиливать рамы в нужно месте - искать козявки в чужом носу только после того, как собственный вытрешь.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710935
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iвылизывал милисикунды там,где не нужно, писал ассемблерные вставки и тд.толпойоб детектед
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36710953
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711066
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Шайтан, это по детству золотому было, но даже тогда мне советчики не нужны были.
WPF vs Silverlight в корпоративных приложениях ]А тебе и сейчас нужны няньки и подгузники.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711080
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iШайтан, это по детству золотому было, но даже тогда мне советчики не нужны были.
WPF vs Silverlight в корпоративных приложениях ]А тебе и сейчас нужны няньки и подгузники.
Научись сначала ссылки оформлять, а потом уже про подгузники вещай.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711110
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iШайтан, это по детству золотому было, но даже тогда мне советчики не нужны были.
WPF vs Silverlight в корпоративных приложениях ]А тебе и сейчас нужны няньки и подгузники.
Гыгыг.

Китайская мудрость гласит:
Спросить - стыд на пять минут.
Не знать - стыд на всю жизнь.

Вот Шайтан, ежели чего не знает, не стесняется спросить совета.
А ты, севка, не знаешь и не понимаешь нихера (вплоть до того, что не понимаешь, чего же именно ты не понимаешь), однако же советы раздаёшь
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711115
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Мусичка, в следующий раз буду внимательней.
Извини за любопытство, так тебя бабушка все еще называет или знакомые мальчишки-шалунишки?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711128
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
ЛПiШайтан, это по детству золотому было, но даже тогда мне советчики не нужны были.
WPF vs Silverlight в корпоративных приложениях ]А тебе и сейчас нужны няньки и подгузники.
Гыгыг.

Китайская мудрость гласит:
Спросить - стыд на пять минут.
Не знать - стыд на всю жизнь.

Вот Шайтан, ежели чего не знает, не стесняется спросить совета.
А ты, севка, не знаешь и не понимаешь нихера (вплоть до того, что не понимаешь, чего же именно ты не понимаешь), однако же советы раздаёшь

Китайская мудрость гласит: если вам нечего сказать, расскажите китайскую мудрость.

Кроличек, обычно, в этом случае вспоминает стену, Шайтан - перестает жевать попкорн, пытается что-то вымучить, но знает только два слова.
Ты в хорошей компании.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711175
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iесли вам нечего сказать
Нечего сказать здесь именно тебе.
Ты за весь топик ни слова по делу не произнёс :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711180
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛПiесли вам нечего сказать
Нечего сказать здесь именно тебе.
Ты за весь топик всё существование на форуме ни слова по делу не произнёс :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711215
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Извините, мальчики, но страшилки я рассказывать не умею, лампочки в коридоре не перегорают, соседи нормальные, барабашки нигде не водятся(сплюнул три раза).
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711230
ЛП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iИзвините, мальчики, но страшилки я рассказывать не умею, лампочки в коридоре не перегорают, соседи нормальные, барабашки нигде не водятся(сплюнул три раза).
Ну так и иди отсюда накуй :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711345
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Не зря я тебя с МСУ путал. Даунята все одинаковые
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36711982
1ten0.0net1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А меня бесит, что нифига не получается украсить grid (data/string)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36712287
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1ten0.0net1А меня бесит, что нифига не получается украсить grid (data/string)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        <DataGrid>
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Setter Property="Background" Value="{Binding RowBackground}"/>
                </Style>
            </DataGrid.RowStyle>

            <DataGrid.Columns>                
                <DataGridTextColumn Binding="{Binding OrdersCount}">
                    <DataGridTextColumn.CellStyle>
                        <Style TargetType="DataGridCell">
                            <Style.Triggers>
                                <Trigger Property="IsSelected" Value="False">
                                    <Setter Property="Background" Value="{Binding OrdersCountBackground}"/>
                                </Trigger>
                            </Style.Triggers>
                            <Setter Property="FontWeight" Value="{Binding OrdersCountFontWeight}"/>
                        </Style>
                    </DataGridTextColumn.CellStyle>
                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

Оно?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36716965
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще нормально... Какой-то удот решил за всех, что в Silverlight все взаимодействия с сервером должны быть асинхронными, и что с нормальным ShowDialog заморачиваться не имеет смысла. В итоге надо разгадывать очередную головоломку . А то заняться-то больше нечем...
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36716985
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пипец, сколько педалей нужно прикручивать, чтобы заюзать что-ли вменяемое, стандартное по жизни. Вот это я называю гавнотехнологиями
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36717185
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПипец, сколько педалей нужно прикручивать, чтобы заюзать что-ли вменяемое, стандартное по жизни. Вот это я называю гавнотехнологиями Но это уже камень в огород SL. В WPF с этим всё нормально.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36720883
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Алексей КА вообще нормально... Какой-то удот решил за всех, что в Silverlight все взаимодействия с сервером должны быть асинхронными, и что с нормальным ShowDialog заморачиваться не имеет смысла. В итоге надо разгадывать очередную головоломку . А то заняться-то больше нечем...

А разгадать стоит, тк с rx асинхронности уже не замечаешь и больше не нужны муторные dowork'и и callback'и

ЗЫ Мусичка такой непостоянный, то авторитетно и заявлял, что "диалоговость" есть, а теперь всех расстроил
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36724624
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iА разгадать стоитНу давай попробуем. Возьмём последовательность диалогов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
        public static class CommonDialogs
        {
            public static IObservable<bool> AskTrue(string message, string header)
            {
                return Ask(message, header).Where(v => v);
            }

            public static IObservable<bool> Ask(string message, string header)
            {
                // Тут мутится диалог в асинхронном Silverlight-стиле.
                // Возвращает true/false.
            }
        }

        ....

        void SomeCommand
        {
            CommonDialogs.AskTrue("Будет всё удаленонах. Продолжить?", null)
                .Subscribe(v1 =>
                    CommonDialogs.AskTrue("Ты уверен?", null)
                        .Subscribe(v2 =>
                            CommonDialogs.AskTrue("Точно уверен?", null)
                                .Subscribe(v3 =>
                                    CommonDialogs.AskTrue("Совсем уверен?", null)
                                        .Subscribe(v4 => УдалитьВсёНах())
                                        
                                )
                        )
                );
        }

Наблюдается та же лесенка из лямбд, которая была бы если бы было бы:
Код: plaintext
public static void Ask(string message, string header, Action<bool> closed)

Что я делаю не так?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36724979
удот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КА вообще нормально... Какой-то удот решил за всех, что в Silverlight все взаимодействия с сервером должны быть асинхроннымиТю. Ну есть NPAPI, или как там его, в нем все дело. А даже если б было и не так - какого уйха какой-то плагин должен вешать весь бразуер? Не вижу проблемы в требовании не "морозить" UI поток. Он на то и УИ. Отвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36725041
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удотТю. Ну есть NPAPI, или как там его, в нем все делоЭто чё?
удотА даже если б было и не так - какого уйха какой-то плагин должен вешать весь бразуер?Как будто других способов его заморозить нету. Было бы желание.
удотНе вижу проблемы в требовании не "морозить" UI поток. Он на то и УИ.Это требование было и есть всегда. Просто в данном случае жестоко навязывается единственный способ решения проблемы.
удотОтвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.Расскажи об этом на форуме дельфистов. Будет весело. Да и не в любой жо..., а в библиотечной функции. Чуешь разницу?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726827
удотъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей КудотТю. Ну есть NPAPI, или как там его, в нем все делоЭто чё?Это то. Что ограничивает возможности сервелата (как и любого другого платформонезависимого плагина браузера). Будет другой АПИ для плагинов (а давно назревает) - другое дело. Пока имеем то, что имеем.

Алексей КудотОтвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.Расскажи об этом на форуме дельфистов. Будет весело. Да и не в любой жо..., а в библиотечной функции. Чуешь разницу?Причем тут какое-то давно дохлое дельфи? Причем тут библ... (живут же люди (c)) библиотеки? Могу сказать точно (закончив недавно типичный data-entry проект на сервелате) - ничего страшного в отсутствии modal-style окон в Сл нет. Еще раз - просто нужно принять, что УИ - это ортогональная данным и их обработке вещь. Между прочим, понимание сего зело продвигает в написании почти кроссплатформенного кода (xaml + cs), насколько это возможно, между wpf и silverlight. А как насчет разделяемой code base между silverlight, wpf и winforms? Оказывается, и это возможно, в разумных пределах, конечно. Ключ - уи - это уи, данные (модель) - это данные. Это разные вещи.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726918
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удотъЭто то. Что ограничивает возможности сервелата (как и любого другого платформонезависимого плагина браузера). Будет другой АПИ для плагинов (а давно назревает) - другое дело. Пока имеем то, что имеем.Ага. Видел в гугле...

удотъМогу сказать точно (закончив недавно типичный data-entry проект на сервелате) - ничего страшного в отсутствии modal-style окон в Сл нет.Вообще отказался от диалогов или на лямбдах всё?

удотъЕще раз - просто нужно принять, что УИ - это ортогональная данным и их обработке вещь.Да кто ж спорит.

удотъМежду прочим, понимание сего зело продвигает в написании почти кроссплатформенного кода (xaml + cs), насколько это возможно, между wpf и silverlight. А как насчет разделяемой code base между silverlight, wpf и winforms? Оказывается, и это возможно, в разумных пределах, конечно.Если WPF-ные диалоги превратить в Silverlight-ные BeginInvoke-ом - тогда да.

удотъКлюч - уи - это уи, данные (модель) - это данные. Это разные вещи.Непонятно, какое это имеет отношение к диалогам, но на всякий случай соглашусь. :-))

ЗЫ: В конце той страницы пример с диалогами. Чё я делаю не так?
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726935
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Алексей КiА разгадать стоитНу давай попробуем. Возьмём последовательность диалогов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
        public static class CommonDialogs
        {
            public static IObservable<bool> AskTrue(string message, string header)
            {
                return Ask(message, header).Where(v => v);
            }

            public static IObservable<bool> Ask(string message, string header)
            {
                // Тут мутится диалог в асинхронном Silverlight-стиле.
                // Возвращает true/false.
            }
        }

        ....

        void SomeCommand
        {
            CommonDialogs.AskTrue("Будет всё удаленонах. Продолжить?", null)
                .Subscribe(v1 =>
                    CommonDialogs.AskTrue("Ты уверен?", null)
                        .Subscribe(v2 =>
                            CommonDialogs.AskTrue("Точно уверен?", null)
                                .Subscribe(v3 =>
                                    CommonDialogs.AskTrue("Совсем уверен?", null)
                                        .Subscribe(v4 => УдалитьВсёНах())
                                        
                                )
                        )
                );
        }

Наблюдается та же лесенка из лямбд, которая была бы если бы было бы:
Код: plaintext
public static void Ask(string message, string header, Action<bool> closed)

Что я делаю не так?
Все.
1. Скачешь по верхам не изучив толком framework. Rx - Liqn for Event и в нем масса возможностей обойтись без этих дурацких лесенок.
2. Паттерн применяется не к месту. Для любителей задавать много вопросов все реализовано в caliburn. C ним viewmodel должна вернуть только список вопросов, остальное делается на автомате.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726937
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Алексей К
удотОтвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.Расскажи об этом на форуме дельфистов. Будет весело. Да и не в любой жо..., а в библиотечной функции. Чуешь разницу?

SL совсем из другой бочки чем Delphi. Давно пора почувствовать разницу
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726943
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iАлексей КЧто я делаю не так?
Все.
1. Скачешь по верхам не изучив толком framework. Rx - Liqn for Event и в нем масса возможностей обойтись без этих дурацких лесенок.Ну покажи пример.
i2. Паттерн применяется не к месту.Я это подозревал.
iДля любителей задавать много вопросов все реализовано в caliburn. C ним viewmodel должна вернуть только список вопросов, остальное делается на автомате.Не понравилось.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726946
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iАлексей К
удотОтвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.Расскажи об этом на форуме дельфистов. Будет весело. Да и не в любой жо..., а в библиотечной функции. Чуешь разницу?SL совсем из другой бочки чем Delphi. Давно пора почувствовать разницуДа я уже давно почувствовал. То что в делфи (и прочих WinForms) делается просто и очевидно здесь требует каких-то неимоверных извратов. И все проблемы созданы искуственно, на пустом месте.

Накойхер (с) навязывать асинхронность с сервисами. Чё я сам что ли не догадаюсь запустить операцию через пул потоков.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36726960
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Алексей КiАлексей К
удотОтвыкайте от циклов обработки сообщений в любой жо... и по любому поводу.Расскажи об этом на форуме дельфистов. Будет весело. Да и не в любой жо..., а в библиотечной функции. Чуешь разницу?SL совсем из другой бочки чем Delphi. Давно пора почувствовать разницуДа я уже давно почувствовал. То что в делфи (и прочих WinForms) делается просто и очевидно здесь требует каких-то неимоверных извратов. И все проблемы созданы искуственно, на пустом месте.

Накойхер (с) навязывать асинхронность с сервисами. Чё я сам что ли не догадаюсь запустить операцию через пул потоков.
А мне не нужны пляски с бубнами в виде пула потоков. По мне, так совершенно правильно сделали. Очень к месту асинхронная проверка при вводе данных в форму и тд
Жванецкий Запах чем хорош: не нравится - отойди, не нюхай.
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36727011
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КiНу покажи пример.


Мда. Как всегда эпический Севка игнорирует практику... :)
...
Рейтинг: 0 / 0
Топик ненависти к WPF
    #36727222
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iА мне не нужны пляски с бубнами в виде пула потоков. По мне, так совершенно правильно сделали. Очень к месту асинхронная проверка при вводе данных в форму и тдДа я не против, просто мне не нравится, что навязывается единственное решение.
...
Рейтинг: 0 / 0
336 сообщений из 336, показаны все 14 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Топик ненависти к WPF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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