title: WPF MVVM programming in a Portable Class Library
body: <p>These days I'm working on a new c# project using <code>WPF</code> and <code>MVVM</code> related features and tools of .NET platform. I am totally new to this type of application development. After I started learning the stuff like <code>ICommand</code> and <code>INotifyPropertyChanged</code> I noticed that as while as I'm digging into these classes and the namespace <code>System.Windows.Input</code> I'm actually moving away from portability.</p>
  
  <p>Before I stuck with <code>MVVM</code> I used to create a portable class library for business layer of my application.</p>
  
  <p>Are these <code>MVVM</code> classes from <code>PresentationCore.dll</code> well supported in another platforms like Xamarin android and iOS and mac? If I use <code>ICommand</code>, <code>CommandManager</code> and other classes in a portable class library am I able to use the implemented library in another mentioned platforms too?</p>
  
  <p><em>What do I mean by moving away from portability?</em></p>
  
  <p>For example say we want to develop an application that should be portable to windows and android platforms. when I implement <code>ICommand</code> I only can use the command with a <code>WPF</code> control though I easily can call the method in a click event handler of a button in a xamarin android application. So in this example the ICommand is useless in Xamarin android application.</p>
  
  <p><strong>Could you please guide me what should we consider when we are programming <code>MVVM</code> in a Portable class library? What do <code>MVVM</code> and <code>PCL</code> have in common? And When their concepts and features seats uneasy with each other?</strong> </p>