---
title: "Model-View-ViewModel (MVVM) - Muhammad Rehan Saeed"
description: "Blog posts authored by Muhammad Rehan Saeed about Model-View-ViewModel (MVVM)."
canonical_url: "https://rehansaeed.com/tag/model-view-view-model-mvvm/"
meta:
  author: "Muhammad Rehan Saeed"
  "og:description": "Blog posts authored by Muhammad Rehan Saeed about Model-View-ViewModel (MVVM)."
  "og:image": "https://rehansaeed.com/_og/s/o_eb397ab0496c2c1e.png"
  "og:image:alt": "# Model-View-ViewModel (MVVM) - Muhammad Rehan Saeed"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "Model-View-ViewModel (MVVM)"
  "twitter:image": "https://rehansaeed.com/_og/s/o_eb397ab0496c2c1e.png"
  "twitter:image:alt": "# Model-View-ViewModel (MVVM) - Muhammad Rehan Saeed"
---

> Index of every page on this site: [llms.txt](https://rehansaeed.com/llms.txt)

# [# Model-View-ViewModel (MVVM)](https://rehansaeed.com/tag/model-view-view-model-mvvm/)

## [Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo](https://rehansaeed.com/model-view-viewmodel-mvvm-part4-inotifydataerrorinfo/)

An base class implementation for the INotifyDataErrorInfo interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.

Posted 9 September 2014 - **12 min read**

## [Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged](https://rehansaeed.com/model-view-viewmodel-mvvm-part3-inotifypropertychanged/)

An base class implementation for the INotifyPropertyChanged interface. Used in the Model-View-ViewModel (MVVM) pattern. Targeted for best performance.

Posted 18 June 2014 - **11 min read**

## [Model-View-ViewModel (MVVM) - Part 2 - IDisposable](https://rehansaeed.com/model-view-viewmodel-mvvm-part2-idisposable/)

Implementing IDisposable correctly is ridiculously hard. A Disposable base class can make it easier. Using IDisposable in Model-View-ViewModel (MVVM) really helps.

Posted 13 June 2014 - **4 min read**

## [Model-View-ViewModel (MVVM) - Part 1 - Overview](https://rehansaeed.com/model-view-viewmodel-mvvm-part1-overview/)

What really goes into using Model-View-ViewModel (MVVM) in .NET. Base classes for INotifyPropertyChanged, INotifyDataErrorInfo, IDisposable and a lot more.

Posted 14 May 2014 - **5 min read**

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://rehansaeed.com/#website","@type":"WebSite","description":"Software Developer at Microsoft, YouTuber, Open Source Contributor and Blogger","inLanguage":"en-GB","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/","author":{"@id":"https://rehansaeed.com/#identity"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://rehansaeed.com/?search={search_term_string}"},"query-input":"required name=search_term_string"}],"publisher":{"@id":"https://rehansaeed.com/#publisher"}},{"@id":"https://rehansaeed.com/tag/model-view-view-model-mvvm/#webpage","description":"Blog posts authored by Muhammad Rehan Saeed about Model-View-ViewModel (MVVM).","name":"Model-View-ViewModel (MVVM)","url":"https://rehansaeed.com/tag/model-view-view-model-mvvm/","@type":["WebPage","CollectionPage"],"breadcrumb":{"@id":"https://rehansaeed.com/tag/model-view-view-model-mvvm/#breadcrumb"},"isPartOf":{"@id":"https://rehansaeed.com/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://rehansaeed.com/tag/model-view-view-model-mvvm/"]}]},{"@id":"https://rehansaeed.com/#identity","@type":"Person","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com/about/","image":{"@id":"https://rehansaeed.com/#/schema/image/1"},"sameAs":["https://github.com/RehanSaeed","https://www.linkedin.com/in/muhammad-rehan-saeed","https://stackoverflow.com/users/1212017/muhammad-rehan-saeed","https://www.youtube.com/c/MuhammadRehanSaeed","https://www.twitch.tv/rehansaeeduk"]},{"@id":"https://rehansaeed.com/#publisher","@type":"Organization","logo":"https://rehansaeed.com/images/schema/Publisher-600x60.png","name":"Muhammad Rehan Saeed","url":"https://rehansaeed.com"},{"@id":"https://rehansaeed.com/tag/model-view-view-model-mvvm/#/schema/item-list/1","@type":"ItemList","itemListElement":[{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part4-inotifydataerrorinfo/","position":1},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part3-inotifypropertychanged/","position":2},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part2-idisposable/","position":3},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM) - Part 1 - Overview","url":"https://rehansaeed.com/model-view-viewmodel-mvvm-part1-overview/","position":4}]},{"@id":"https://rehansaeed.com/tag/model-view-view-model-mvvm/#breadcrumb","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","name":"Blog","item":"https://rehansaeed.com/","position":1},{"@type":"ListItem","name":"Model-View-ViewModel (MVVM)","item":"https://rehansaeed.com/tag/model-view-view-model-mvvm/","position":2}]},{"@id":"https://rehansaeed.com/#/schema/image/1","@type":"ImageObject","contentUrl":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png","inLanguage":"en-GB","url":"https://rehansaeed.com/images/author/Muhammad-Rehan-Saeed/Logo-512x512.png"}]}
```

## Sitemap

See the full [sitemap](https://rehansaeed.com/sitemap.md) for all pages.
