powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: А где вы размещаете RoutedUICommand-ы?
6 сообщений из 6, страница 1 из 1
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618799
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть неразлучная пара VM+View.
Она может запускать какие-то команды, специфические именно для этой пары.
Где объявить эти команды?

Можно сделать в проекте какой-то общий класс Commands и туда все пихать.
Но это увеличивает связность кода, сложнее становится взять и потащить куда-то эту пару в другой проект или в библиотеку.

Можно делать отдельный класс под каждую модель - только ради команд - наплодить кучу дополнительных файлов.

Можно объявить команду в ViewModel, тогда она приобретает зависимость от System.Windows.Input, с другой стороны - IСommand тоже там определен.
...
Рейтинг: 0 / 0
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618823
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Золотой пули нет.
Но есть утилиты которые строят новый проект по своим шаблонам для реализации MVVM.
Вот они строят папки:
/Commands
/Models
/ViewModels
/Views
...
IMHO
...
Рейтинг: 0 / 0
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618828
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
View (представление) на увроне пользовательских файлов разметки не может не быть привязанным к VM.
Абстракция должно быть на уровне элементов управления и свойств зависимости. Создавая XAML файл\Шаблон данных, вы должны четко знать, для какой модели представления (тип контекста) вы его делайте.

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

Больше всего раздражает оборачивать всё это в команды и так далее, особенно когда делаешь какой то пример. Сейчас кстати в Avalonia можно делать связывание с делегатами и методами, вместо команд. При этом функциональность команд сохранили.

* RoutedCommand'ы удобно использовать, когда есть на панели кнопки взаимодействия с элементом управления, типа Copy\Paste\Undo\Redo, команды будут посылаться вверх по дереву и обрабатываться в тех элементах управления, которые из обработали. В TextBox свой Undo\Redo И другие команды, а у формы или другого элемента управления будут свои и обрабатываться они будут в порядке очереди (ToolBar и подобные элементы управления содержимым содержимого окна)
* Команды контекстного меню очень удобно заварачивать в маршрутизируемые команды и обрабатывать их централизовано в контроле делая универсальные менюшки, типа Expand All\Select All\Select children и так далее, есть уже предопределенные в приложении команды для многих контролов отлично работающих и там и в примере выше.
* Для взаимодейтсвия с элементами списочных контролов, контекст элемента списка это элемент коллекции и методов связанных с его удалением\созданием и других в нём естественно быть недолжно. Команды связанные с элементом управления удобно обрабатывать на уровне самого списочного контрола, а в качестве параметра передавать элемент коллекции
* Думаю есть полно других вариантов применения маршрутизируемых команд, включая локализацию языков, если не делать её в лоб
...
Рейтинг: 0 / 0
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618855
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман, спасибо за развернутый ответ, просто ты ответил не на тот вопрос. ))
Как применять команды я уже определился, несколько сценариев есть.
Я имею ввиду - где ты размещаешь объявление
Код: c#
1.
public static readonly RoutedUICommand LoadMoreCommand = new RoutedUICommand(....
...
Рейтинг: 0 / 0
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618886
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProРоман, спасибо за развернутый ответ, просто ты ответил не на тот вопрос. ))
Как применять команды я уже определился, несколько сценариев есть.
Я имею ввиду - где ты размещаешь объявление
Код: c#
1.
public static readonly RoutedUICommand LoadMoreCommand = new RoutedUICommand(....


Если это команда элемента управления, то в элементе управления, если это какая то общая команда, типа Undo\Redo то если честно, то где попало :) обычно класс валяющийся на верхних уровнях пространств имен или даже пространства имен local.
Там же как правило, где валяются ститческие ключи для динамических ресурсов
...
Рейтинг: 0 / 0
WPF: А где вы размещаете RoutedUICommand-ы?
    #39618889
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesЕсли это команда элемента управления, то в элементе управленияа если это команда достаточно автономного куска программы, который именно не UserControl, а VM+DataTemplate?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF: А где вы размещаете RoutedUICommand-ы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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