|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaСначала косячим, а потом делаем железный тазик, чтобы они не стучали по одному местуЗабинди CommandParameter через RelativeSource или забинди его на DataContext ItemContainer ItemsControl-а, если умеешь. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 10:50 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
Сон Веры Павловны user7320А другие, особенно новички, пусть сами мучаются, хе-хе-хе. И чего тут мучаться? Забиваем в гугл https://www.google.ru/search?q=Prism delegatecommand , по первой ссылке приходим сюда: http://msdn.microsoft.com/en-us/library/gg431410(v=pandp.40).aspx , переходим к хелпу по конструктору с перегрузкой DelegateCommand<T>(Action<T>): http://msdn.microsoft.com/en-us/library/gg405544(v=pandp.40).aspx - а там ясным английским языком написано, что Код: c# 1. 2. 3.
executeMethod Type: System.Action<T> Delegate to execute when Execute is called on the command. This can be null to just hook up a CanExecute delegate. Далее забывчивые могут открыть хелп по ICommand.Execute (DelegateCommand реализует ICommand - К.О.), и прочитать: Код: c# 1. 2. 3.
Parameters parameter Type: System.Object Data used by the command. If the command does not require data to be passed, this object can be set to null. Призмовцы просто сделали типизированную обертку, реализующую ICommand - перед передачей параметра в CanExecute/Execute он приводится к генерик-типу. Ну, и наконец: InvokeCommandAction.CommandParameter : Remarks This is the value passed to ICommand.CanExecute and ICommand.Execute. Хотя мне лично это всё было понятно и без путешествий по хелпам. Спасибо. Вот это я и хотел. Видно, сам я ещё не настолько умный, чтобы это связать сразу. Алексей Кuser7320Ладно, я разобрался и рад. А другие, особенно новички, пусть сами мучаются, хе-хе-хе. ))) Буду брать деньги за консультации. )))Хоть в курсе про возможную утечку памяти при такой реализации DelegateCommand? :-) А при такой ? Кстати, у меня там в английском варианте вся разметка кода скомкана в один абзац на любых браузерах. В русском всё ОК. А у вас? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 10:58 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Хоть в курсе про возможную утечку памяти при такой реализации DelegateCommand? :-) А при такой ? Кстати, у меня там в английском варианте вся разметка кода скомкана в один абзац на любых браузерах. В русском всё ОК. А у вас?При такой нормально. Там ключевой момент: Код: c# 1. 2. 3. 4. 5.
Событие CommandManager.RequerySuggested в WPF реализовано через Weak Event Pattern. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 11:02 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaЗЫ 2TS, бессовестный МС заставил посмотреть исходники, я бы жаловался в Лигу наций msdn<Button Command="{Binding Path=SubmitCommand}" CommandParameter="SubmitOrder"/> Не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 11:09 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaЗЫ 2TS, бессовестный МС заставил посмотреть исходники, я бы жаловался в Лигу наций пропущено... Меня немного удивляет, когда с одной стороны говорят о всяких интерфейсах и инкапсуляции и прочих ништяках, а с другой "а-ха-ха, не можешь даже в исходниках разобраться!!". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 11:11 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
Алексей КSeVaСначала косячим, а потом делаем железный тазик, чтобы они не стучали по одному местуЗабинди CommandParameter через RelativeSource или забинди его на DataContext ItemContainer ItemsControl-а, если умеешь. :-) Делал это неоднократно, но только подобного никогда не наблюдал, тк не было мультов с dependencyproperty, которые шастают за даннами как у тебя. Процедура простая: инициализируем асинхронную загрузку данных, не дожидаясь ее выполнения создаем view, отдаем его сервису навигации для показа, после того как данные получены, создается viewmodel, который привязываем к DataContext. Таким образом ничего не стучит и не гремит, тазик не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 15:07 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
user7320SeVaЗЫ 2TS, бессовестный МС заставил посмотреть исходники, я бы жаловался в Лигу наций пропущено... Меня немного удивляет, когда с одной стороны говорят о всяких интерфейсах и инкапсуляции и прочих ништяках, а с другой "а-ха-ха, не можешь даже в исходниках разобраться!!". А меня удивляют те, кто считают, что им кто-то обязан что-то разжевывать. Я еще не видел полной документации к чему-либо, а посему помогают только примеры и исходники. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 15:10 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... Забинди CommandParameter через RelativeSource или забинди его на DataContext ItemContainer ItemsControl-а, если умеешь. :-) Делал это неоднократно, но только подобного никогда не наблюдал, тк не было мультов с dependencyproperty, которые шастают за даннами как у тебя. Процедура простая: инициализируем асинхронную загрузку данных, не дожидаясь ее выполнения создаем view, отдаем его сервису навигации для показа, после того как данные получены, создается viewmodel, который привязываем к DataContext. Таким образом ничего не стучит и не гремит, тазик не нужен. Тынц 4.0 Тынц 4.5 автор5- Checking for a valid DataContext object. There are cases where the DataContext of an item container in an ItemsControl becomes disconnected. An item container is the UI element that displays an item in an ItemsControl. When an ItemsControl is data bound to a collection, an item container is generated for each item. In some cases, item containers are removed from the visual tree. Two typical cases where an item container is removed are when an item is removed from the underlying collection and when virtualization is enabled on the ItemsControl. In these cases, the DataContext property of the item container will be set to the sentinel object that is returned by the BindingOperations.DisconnectedSource static property. You should check whether the DataContext is equal to the DisconnectedSource object before accessing the DataContext of an item container. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 15:38 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
Алексей КSeVaпропущено... Делал это неоднократно, но только подобного никогда не наблюдал, тк не было мультов с dependencyproperty, которые шастают за даннами как у тебя. Процедура простая: инициализируем асинхронную загрузку данных, не дожидаясь ее выполнения создаем view, отдаем его сервису навигации для показа, после того как данные получены, создается viewmodel, который привязываем к DataContext. Таким образом ничего не стучит и не гремит, тазик не нужен. Тынц 4.0 Тынц 4.5 автор5- Checking for a valid DataContext object. There are cases where the DataContext of an item container in an ItemsControl becomes disconnected. An item container is the UI element that displays an item in an ItemsControl. When an ItemsControl is data bound to a collection, an item container is generated for each item. In some cases, item containers are removed from the visual tree. Two typical cases where an item container is removed are when an item is removed from the underlying collection and when virtualization is enabled on the ItemsControl. In these cases, the DataContext property of the item container will be set to the sentinel object that is returned by the BindingOperations.DisconnectedSource static property. You should check whether the DataContext is equal to the DisconnectedSource object before accessing the DataContext of an item container. По ссылкам описаны мульти-пульти для твоих любимых проперти, которым нужна подписка на события ui. Чтобы не было подобной головной боли и придумали viewmodel. Еще одно подтверждение тому, что сначала придумываем себе трудности, а потом героически их преодалеваем, изучая доки msdn c моментами, когда у wpf сносит крышу ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 16:21 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVauser7320пропущено... Меня немного удивляет, когда с одной стороны говорят о всяких интерфейсах и инкапсуляции и прочих ништяках, а с другой "а-ха-ха, не можешь даже в исходниках разобраться!!". А меня удивляют те, кто считают, что им кто-то обязан что-то разжевывать. Я еще не видел полной документации к чему-либо, а посему помогают только примеры и исходники. Да-да, если бы были полные документации, то евангелисты и, в конечном счёте, корпорации, не смогли бы продавать свои книжонки и зарабатывать дополнительную денежку. А с исходниками - как с линуксами: "вы можете бесплатно скачать или декомпилировать и разобраться долгими ночами в наших исходниках, если ваше время ничего не стоит". А можете купить наших книжек и посетить наши семинары, где наши специалисты сразу укажут вам на пару узких мест и героические методы их преодоления... за умеренную плату, канеш... Кстати, ещё неясно, с чего корпорации больше имеют - с вижуал студий всяких или с курсов-семинаров-книжонок. И это, "я заработал миллионы на курсах как "заработать миллионы"" ещё никто не отменял. Ну типа это был "хнык-хнык". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 16:57 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaПо ссылкам описаны мульти-пульти для твоих любимых проперти, которым нужна подписка на события ui.Там про значение DataContext и ItemContainer с включенной виртуализацией. А английский язык учи - пригодится! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 17:08 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
user7320Ну типа это был "хнык-хнык".Хватит ныть! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 17:09 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
Алексей КSeVaПо ссылкам описаны мульти-пульти для твоих любимых проперти, которым нужна подписка на события ui.Там про значение DataContext и ItemContainer с включенной виртуализацией. А английский язык учи - пригодится! С документацией все понятно, а при чем старая калоша, которую ты упоминаешь, нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2014, 22:17 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
SeVaАлексей Кпропущено... Там про значение DataContext и ItemContainer с включенной виртуализацией. А английский язык учи - пригодится! С документацией все понятно, а при чем старая калоша, которую ты упоминаешь, нет.Представь что будет, если на вход этого: Код: c# 1. 2. 3. 4.
в качестве параметра придёт служебный объект, обозначающий отсоединённость ItemContainer. В WPF DataGrid аналогичная ситуация с фиктивной записью, которая обозначает дополнительную строку для добавляемой записи. Эту фиктивную запись можно отличить так : Код: c# 1. 2. 3. 4.
В сложившейся ситуации мне кажется разумным иметь в CanExecute дополнительную проверку на тип объекта, передаваемого в качестве параметра, которую я описал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 06:16 |
|
Про команды из Prism-Blend
|
|||
---|---|---|---|
#18+
Рисуем правильную команду(вернее, берем готовую из призм) Код: c# 1. 2. 3. 4.
И если даже стучит, то и Бог с ней. Нет никого криминала, что не будет никаких телодвижений на то, чего уже нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2014, 08:47 |
|
|
start [/forum/topic.php?fid=21&msg=38541660&tid=1441201]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 599ms |
0 / 0 |