What problem does it solve? WPF developers using the DevExpress MVVM Framework must choose between four view-model strategies, wire commands and INotifyPropertyChanged boilerplate, call UI services without code-behind, and pass data between view models — each with different C#/.NET version requirements and failure modes. This Skill guides those decisions and provides correct, working code patterns for every strategy. ## Core Features & Use Cases - View-Model Strategy Selection: Compares compile-time [GenerateViewModel], runtime POCO via ViewModelSource, ViewModelBase, and BindableBase with a requirements matrix covering C# version, .NET target, and VB support. - Commands, Services, and Behaviors: Covers DelegateCommand/AsyncCommand wiring, 25+ predefined services (IMessageBoxService, IDialogService, IDispatcherService, etc.) resolved via GetService<T>(), and behaviors like EventToCommand and KeyToCommand that replace code-behind. - View-Model Communication: Explains ISupportParameter, ISupportParentViewModel with ServiceSearchMode.PreferParents, and Messenger pub/sub including the weak-reference pitfall. - Use Case: A developer building a master-detail WPF app on .NET 8 uses the compile-time generator for view models, shows confirmation dialogs from a child view model via the parent window's DXMessageBoxService, and routes grid double-clicks to an EditCommand with EventToCommand — all without code-behind. ## Quick Start Ask the assistant to create a new WPF view model using the DevExpress compile-time GenerateViewModel attribute with a bindable property and a command wired to a button in XAML.