Оба ваших вопроса настоятельно рекомендуют мне использовать для определения бизнес-логики что-то на больше , чем концепция View Model.
DelegateCommand
определяет отдельный класс отдельно от модели представления. ObservableObject
является экземпляром отдельного класса, кроме модели представления. Это не правило, а личное предпочтение на данный момент: модель представления мне достаточно как контейнер для бизнес-логики, относящейся к визуальным элементам. Это может предать мое предпочтение MVVM Light - которого мне не хватает на данный момент.
Я не совсем уверен в том, что происходит в примере с DataGrid. Что я могу сказать, так это то, что DataGrid не очень гибок - однако в WPF DataGridTemplateColumn
может декларативно связывать модель представления с представлением (например, пользовательским элементом управления). Так что, возможно, это имеет смысл:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate DataView="{x:Type m:YourViewModelForButton}">
<v:YourViewWithButton/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>