Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Подарки от программис'тов

6208   6 7 8 9 10 11 12 13 14 15 16 все
alex445 коренной житель24.08.22 19:43
NEW 24.08.22 19:43 
в ответ alex445 24.08.22 17:47

То, что в Блейзор сотворили с байндингами - это конечно полный трындец. По сравнению с тем же WPF. Штуки 4 вида байндингов, и на каждый вариант - свой синтаксис и условности. Не как в WPF - забайндил и выбрал вариант (односторонний, двусторонний и т.п.).

AlexNek патриот25.08.22 12:19
AlexNek
NEW 25.08.22 12:19 
в ответ alex445 24.08.22 19:43
То, что в Блейзор сотворили с байндингами - это конечно полный трындец.

Как то, пока, не замечаю проблем. Можно подробнее?

alex445 коренной житель25.08.22 14:16
NEW 25.08.22 14:16 
в ответ AlexNek 25.08.22 12:19, Последний раз изменено 25.08.22 14:29 (alex445)

Байндинги в Блейзор:


one-way between view and view model (or code behind for view) of the same component:

@PropName - in view


two-way between view and view model of the same component:

@bind-PropName - in view


two-way between two components:

Parameter + EventCallback + code that invokes the event callback - in code behind of the child component

<ChildComponent @bind-ChildPropName="parentFieldOrProperty" @bind-PropName:event="ChildEventCallback"> - in view of the parent component


Специально выделил жирным в последней строчке - жонглирование именами членов двух компонентов.


Плюс всякие неочевидные тонкости, о которых надо знать, типа


"Generally, avoid creating components that write directly to their own component parameters. For more information, see ASP.NET Core Razor components."


Т.е. у вас есть свойство с атрибутом "параметр", но вы не можете в него писать. Нужно свойство-обёртку для него сделать:


[Parameter]
public string? ChildMessage { get; set; }

private string BoundValue
{
    get => ChildMessage ?? string.Empty;
    set => ChildMessageChanged.InvokeAsync(value);
}


Ладно с байндингами, но тьюториалы по ним тоже кучу вещей не договаривают. Например, тут приводится двусторонний байндинг лишь для представления и коуд бехайнд, а для двухстороннего байндинга между разными компонентами нужно использовать параметры и кучу дополнительного кода (коллбеки, хендлеры), как показано здесь или здесь (последняя ссылка, кстати, на тоже немного устаревший тьюториал - там некоторые вещи из 6 версии фреймворка отсутствуют, но сейчас точно не помню, какие).


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

alex445 коренной житель25.08.22 14:26
NEW 25.08.22 14:26 
в ответ alex445 25.08.22 14:16, Последний раз изменено 25.08.22 14:29 (alex445)

one-way between view and view model (or code behind for view) of the same component:

@PropName - in view


two-way between view and view model of the same component:

@bind-PropName - in view


two-way between two components:

Parameter + EventCallback + code that invokes the event callback - in code behind of the child component

<ChildComponent @bind-ChildPropName="parentFieldOrProperty" @bind-PropName:event="ChildEventCallback"> - in view of the parent component

Сравните эти портянки с WPF-скими байндингами. Там лишь в коде надо реализовать INotifyPropertyCHanged, а в разметке всё просто указывается, плюс вариант байндинга.


Когда надо связать иерархию компонентов, то что в Блейзор, что в ВПФ начинается акробатика: в Блейзор начинаем пробрасывать значения по иерархии компонентов посредством тонн кода, а в ВПФ - жонглировать с разными расширениями разметки по поиску таргета для байндинга в иерархии контролов.

AlexNek патриот25.08.22 17:20
AlexNek
NEW 25.08.22 17:20 
в ответ alex445 25.08.22 14:16
специально выделил жирным в последней строчке - жонглирование именами членов двух компонентов.

Ничего не понял - называй как хочешь.

Всё равно ни вижу никаких проблем. смущ


alex445 коренной житель25.08.22 20:59
NEW 25.08.22 20:59 
в ответ AlexNek 25.08.22 17:20
Ничего не понял - называй как хочешь.

Просто показал, насколько дохрена условностей и мелочей надо учитывать и держать в голове, а также писать простыней, чтобы привязать ОДНО свойство между компонентами.

AlexNek патриот25.08.22 21:32
AlexNek
NEW 25.08.22 21:32 
в ответ alex445 25.08.22 20:59
насколько дохрена условностей и мелочей надо учитывать и держать в голове

Хмм, как то не задумывался о этом, и думаю, в будущем беспокоится не буду смущ

alex445 коренной житель25.08.22 21:53
NEW 25.08.22 21:53 
в ответ AlexNek 25.08.22 21:32

Всеядный, значит. Без претензий. ))

AlexNek патриот25.08.22 22:00
AlexNek
NEW 25.08.22 22:00 
в ответ alex445 25.08.22 21:53
Всеядный, значит. Без претензий.

не всеядный и с претензиями бебе (но другого плана)

6 7 8 9 10 11 12 13 14 15 16 все