[Home](../../) › [Metalama](../../metalama) › [Use Cases](../applications.md) › [Applications](classics.md) › Metalama for UI Apps

# Metalama for UI Apps

> Shows different use cases of Metalama in writing UI apps (like WPF).

Canonical: https://postsharp.net/metalama/applications/ui.html

Metalama can save you a significant amount of redundant code and reduce errors when implementing UI apps, whether they run on desktop, mobile, or browser through WASM. UI apps are often complex, requiring a lot of boilerplate code to make them reactive to user input. Metalama aids in implementing observability (allowing the UI framework to react to data changes), input validation, memoization, and framework-specific constructs such as dependency properties or commands in WPF.

| Pattern | How Metalama can help |
|---------|-----------------------|
| [Change Tracking](https://postsharp.net/metalama/applications/change-tracking) | Automatically implements `IChangeTracking` or `IRevertibleChangeTracking` interfaces, reducing boilerplate code. |
| [INotifyPropertyChanged](https://postsharp.net/metalama/applications/inotifypropertychanged) | Automatically implements the `INotifyPropertyChanged` interface, eliminating repetitive code and reducing errors. |
| [Memoization](https://postsharp.net/metalama/applications/memoization) | Turns standard read-only properties into memoized ones without boilerplate, improving performance. |
| [Undo-Redo](https://postsharp.net/metalama/applications/undo-redo) | Implements the Memento pattern to support undo/redo functionality. |
| [Command](https://postsharp.net/metalama/applications/command) | Generates plumbing code for WPF commands, integrating with `Observable` aspect for `CanExecute` logic. |
| [Dependency Properties](https://postsharp.net/metalama/applications/dependency-property) | Turn C# auto properties into WPF dependency properties. Compatible with [Code Contracts](https://postsharp.net/metalama/applications/contracts).|

---

## Site navigation

- Previous: [Classic Patterns](design-patterns.md)
- Next: [Classic Object Services](object-services.md)
- Index of the whole site: [llms.txt](../../llms.txt)

