|
WPF: А где вы размещаете RoutedUICommand-ы?
|
|||
---|---|---|---|
#18+
Есть неразлучная пара VM+View. Она может запускать какие-то команды, специфические именно для этой пары. Где объявить эти команды? Можно сделать в проекте какой-то общий класс Commands и туда все пихать. Но это увеличивает связность кода, сложнее становится взять и потащить куда-то эту пару в другой проект или в библиотеку. Можно делать отдельный класс под каждую модель - только ради команд - наплодить кучу дополнительных файлов. Можно объявить команду в ViewModel, тогда она приобретает зависимость от System.Windows.Input, с другой стороны - IСommand тоже там определен. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 12:01 |
|
WPF: А где вы размещаете RoutedUICommand-ы?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Золотой пули нет. Но есть утилиты которые строят новый проект по своим шаблонам для реализации MVVM. Вот они строят папки: /Commands /Models /ViewModels /Views ... IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 12:35 |
|
WPF: А где вы размещаете RoutedUICommand-ы?
|
|||
---|---|---|---|
#18+
View (представление) на увроне пользовательских файлов разметки не может не быть привязанным к VM. Абстракция должно быть на уровне элементов управления и свойств зависимости. Создавая XAML файл\Шаблон данных, вы должны четко знать, для какой модели представления (тип контекста) вы его делайте. Я уже кидал как использую, повторять не буду, не вижу ни каких проблем, если будут висячие ссылки их можно решить слабыми ссылками. Больше всего раздражает оборачивать всё это в команды и так далее, особенно когда делаешь какой то пример. Сейчас кстати в Avalonia можно делать связывание с делегатами и методами, вместо команд. При этом функциональность команд сохранили. * RoutedCommand'ы удобно использовать, когда есть на панели кнопки взаимодействия с элементом управления, типа Copy\Paste\Undo\Redo, команды будут посылаться вверх по дереву и обрабатываться в тех элементах управления, которые из обработали. В TextBox свой Undo\Redo И другие команды, а у формы или другого элемента управления будут свои и обрабатываться они будут в порядке очереди (ToolBar и подобные элементы управления содержимым содержимого окна) * Команды контекстного меню очень удобно заварачивать в маршрутизируемые команды и обрабатывать их централизовано в контроле делая универсальные менюшки, типа Expand All\Select All\Select children и так далее, есть уже предопределенные в приложении команды для многих контролов отлично работающих и там и в примере выше. * Для взаимодейтсвия с элементами списочных контролов, контекст элемента списка это элемент коллекции и методов связанных с его удалением\созданием и других в нём естественно быть недолжно. Команды связанные с элементом управления удобно обрабатывать на уровне самого списочного контрола, а в качестве параметра передавать элемент коллекции * Думаю есть полно других вариантов применения маршрутизируемых команд, включая локализацию языков, если не делать её в лоб ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 12:41 |
|
WPF: А где вы размещаете RoutedUICommand-ы?
|
|||
---|---|---|---|
#18+
Роман, спасибо за развернутый ответ, просто ты ответил не на тот вопрос. )) Как применять команды я уже определился, несколько сценариев есть. Я имею ввиду - где ты размещаешь объявление Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 13:03 |
|
WPF: А где вы размещаете RoutedUICommand-ы?
|
|||
---|---|---|---|
#18+
Shocker.ProРоман, спасибо за развернутый ответ, просто ты ответил не на тот вопрос. )) Как применять команды я уже определился, несколько сценариев есть. Я имею ввиду - где ты размещаешь объявление Код: c# 1.
Если это команда элемента управления, то в элементе управления, если это какая то общая команда, типа Undo\Redo то если честно, то где попало :) обычно класс валяющийся на верхних уровнях пространств имен или даже пространства имен local. Там же как правило, где валяются ститческие ключи для динамических ресурсов ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2018, 13:46 |
|
|
start [/forum/search_topic.php?author=%D0%92%D0%BE%D0%B2%D0%B0109&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 23ms |
total: | 175ms |
0 / 0 |