diff --git a/PropertyDependencyDemo/Droid/Assets/AboutAssets.txt b/PropertyDependencyDemo/Droid/Assets/AboutAssets.txt
new file mode 100644
index 0000000..a9b0638
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/Assets/AboutAssets.txt
@@ -0,0 +1,19 @@
+Any raw assets you want to be deployed with your application can be placed in
+this directory (and child directories) and given a Build Action of "AndroidAsset".
+
+These files will be deployed with your package and will be accessible using Android's
+AssetManager, like this:
+
+public class ReadAsset : Activity
+{
+ protected override void OnCreate (Bundle bundle)
+ {
+ base.OnCreate (bundle);
+
+ InputStream input = Assets.Open ("my_asset.txt");
+ }
+}
+
+Additionally, some Android functions will automatically load asset files:
+
+Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
diff --git a/PropertyDependencyDemo/Droid/MainActivity.cs b/PropertyDependencyDemo/Droid/MainActivity.cs
new file mode 100644
index 0000000..b5b710b
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/MainActivity.cs
@@ -0,0 +1,26 @@
+using System;
+
+using Android.App;
+using Android.Content;
+using Android.Content.PM;
+using Android.Runtime;
+using Android.Views;
+using Android.Widget;
+using Android.OS;
+
+namespace PropertyDependencyDemo.Droid
+{
+ [Activity (Label = "PropertyDependencyDemo.Droid", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
+ public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
+ {
+ protected override void OnCreate (Bundle bundle)
+ {
+ base.OnCreate (bundle);
+
+ global::Xamarin.Forms.Forms.Init (this, bundle);
+
+ LoadApplication (new App ());
+ }
+ }
+}
+
diff --git a/PropertyDependencyDemo/Droid/Properties/AndroidManifest.xml b/PropertyDependencyDemo/Droid/Properties/AndroidManifest.xml
new file mode 100644
index 0000000..9b7ac98
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/Properties/AndroidManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/PropertyDependencyDemo/Droid/Properties/AssemblyInfo.cs b/PropertyDependencyDemo/Droid/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4694bb5
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/Properties/AssemblyInfo.cs
@@ -0,0 +1,28 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using Android.App;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle ("PropertyDependencyDemo.Droid")]
+[assembly: AssemblyDescription ("")]
+[assembly: AssemblyConfiguration ("")]
+[assembly: AssemblyCompany ("Wintellect, LLC")]
+[assembly: AssemblyProduct ("")]
+[assembly: AssemblyCopyright ("2015 Wintellect, LLC")]
+[assembly: AssemblyTrademark ("")]
+[assembly: AssemblyCulture ("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion ("1.0.0")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/PropertyDependencyDemo/Droid/PropertyDependencyDemo.Droid.csproj b/PropertyDependencyDemo/Droid/PropertyDependencyDemo.Droid.csproj
new file mode 100644
index 0000000..82bb620
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/PropertyDependencyDemo.Droid.csproj
@@ -0,0 +1,93 @@
+
+
+
+ Debug
+ AnyCPU
+ {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}
+ Library
+ PropertyDependencyDemo.Droid
+ Assets
+ Resources
+ Properties\AndroidManifest.xml
+ Resource
+ Resources\Resource.designer.cs
+ True
+ True
+ PropertyDependencyDemo.Droid
+ v6.0
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ None
+ false
+
+
+ full
+ true
+ bin\Release
+ prompt
+ 4
+ false
+ false
+
+
+
+
+
+
+
+ ..\packages\Xamarin.Forms.1.5.0.6447\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
+
+
+ ..\packages\Xamarin.Forms.1.5.0.6447\lib\MonoAndroid10\FormsViewGroup.dll
+
+
+ ..\packages\Xamarin.Forms.1.5.0.6447\lib\MonoAndroid10\Xamarin.Forms.Core.dll
+
+
+ ..\packages\Xamarin.Forms.1.5.0.6447\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll
+
+
+ ..\packages\Xamarin.Forms.1.5.0.6447\lib\MonoAndroid10\Xamarin.Forms.Platform.dll
+
+
+ ..\packages\Xamarin.Android.Support.v4.23.0.1.3\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll
+
+
+
+
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}
+ PropertyDependencyDemo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/PropertyDependencyDemo/Droid/Resources/AboutResources.txt b/PropertyDependencyDemo/Droid/Resources/AboutResources.txt
new file mode 100644
index 0000000..10f52d4
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/Resources/AboutResources.txt
@@ -0,0 +1,44 @@
+Images, layout descriptions, binary blobs and string dictionaries can be included
+in your application as resource files. Various Android APIs are designed to
+operate on the resource IDs instead of dealing with images, strings or binary blobs
+directly.
+
+For example, a sample Android app that contains a user interface layout (main.axml),
+an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
+would keep its resources in the "Resources" directory of the application:
+
+Resources/
+ drawable/
+ icon.png
+
+ layout/
+ main.axml
+
+ values/
+ strings.xml
+
+In order to get the build system to recognize Android resources, set the build action to
+"AndroidResource". The native Android APIs do not operate directly with filenames, but
+instead operate on resource IDs. When you compile an Android application that uses resources,
+the build system will package the resources for distribution and generate a class called "R"
+(this is an Android convention) that contains the tokens for each one of the resources
+included. For example, for the above Resources layout, this is what the R class would expose:
+
+public class R {
+ public class drawable {
+ public const int icon = 0x123;
+ }
+
+ public class layout {
+ public const int main = 0x456;
+ }
+
+ public class strings {
+ public const int first_string = 0xabc;
+ public const int second_string = 0xbcd;
+ }
+}
+
+You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
+to reference the layout/main.axml file, or R.strings.first_string to reference the first
+string in the dictionary file values/strings.xml.
diff --git a/PropertyDependencyDemo/Droid/Resources/Resource.designer.cs b/PropertyDependencyDemo/Droid/Resources/Resource.designer.cs
new file mode 100644
index 0000000..94e5ae2
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/Resources/Resource.designer.cs
@@ -0,0 +1,61 @@
+#pragma warning disable 1591
+// ------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Mono Runtime Version: 4.0.30319.17020
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+// ------------------------------------------------------------------------------
+
+[assembly: Android.Runtime.ResourceDesignerAttribute("PropertyDependencyDemo.Droid.Resource", IsApplication=true)]
+
+namespace PropertyDependencyDemo.Droid
+{
+
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+ public partial class Resource
+ {
+
+ static Resource()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ public static void UpdateIdValues()
+ {
+ }
+
+ public partial class Attribute
+ {
+
+ static Attribute()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Attribute()
+ {
+ }
+ }
+
+ public partial class Drawable
+ {
+
+ // aapt resource value: 0x7f020000
+ public const int icon = 2130837504;
+
+ static Drawable()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Drawable()
+ {
+ }
+ }
+ }
+}
+#pragma warning restore 1591
diff --git a/PropertyDependencyDemo/Droid/Resources/drawable-hdpi/icon.png b/PropertyDependencyDemo/Droid/Resources/drawable-hdpi/icon.png
new file mode 100644
index 0000000..964f110
Binary files /dev/null and b/PropertyDependencyDemo/Droid/Resources/drawable-hdpi/icon.png differ
diff --git a/PropertyDependencyDemo/Droid/Resources/drawable-xhdpi/icon.png b/PropertyDependencyDemo/Droid/Resources/drawable-xhdpi/icon.png
new file mode 100644
index 0000000..3c01e60
Binary files /dev/null and b/PropertyDependencyDemo/Droid/Resources/drawable-xhdpi/icon.png differ
diff --git a/PropertyDependencyDemo/Droid/Resources/drawable-xxhdpi/icon.png b/PropertyDependencyDemo/Droid/Resources/drawable-xxhdpi/icon.png
new file mode 100644
index 0000000..0d8c1c5
Binary files /dev/null and b/PropertyDependencyDemo/Droid/Resources/drawable-xxhdpi/icon.png differ
diff --git a/PropertyDependencyDemo/Droid/Resources/drawable/icon.png b/PropertyDependencyDemo/Droid/Resources/drawable/icon.png
new file mode 100644
index 0000000..b0ba715
Binary files /dev/null and b/PropertyDependencyDemo/Droid/Resources/drawable/icon.png differ
diff --git a/PropertyDependencyDemo/Droid/packages.config b/PropertyDependencyDemo/Droid/packages.config
new file mode 100644
index 0000000..a2acf46
--- /dev/null
+++ b/PropertyDependencyDemo/Droid/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/PropertyDependencyDemo/PropertyDependencyDemo.sln b/PropertyDependencyDemo/PropertyDependencyDemo.sln
new file mode 100644
index 0000000..acf3bde
--- /dev/null
+++ b/PropertyDependencyDemo/PropertyDependencyDemo.sln
@@ -0,0 +1,71 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PropertyDependencyDemo", "PropertyDependencyDemo\PropertyDependencyDemo.csproj", "{62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PropertyDependencyDemo.iOS", "iOS\PropertyDependencyDemo.iOS.csproj", "{5CB65EC5-5533-4E4A-B31C-F4320A648341}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PropertyDependencyDemo.Droid", "Droid\PropertyDependencyDemo.Droid.csproj", "{932823BE-C1C5-475D-A752-15EBDBAC6A63}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PropertyDependencyDemo.UITests", "UITests\PropertyDependencyDemo.UITests.csproj", "{9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Release|iPhone = Release|iPhone
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Debug|iPhone = Debug|iPhone
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|iPhone.Build.0 = Debug|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|Any CPU.ActiveCfg = Release|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|Any CPU.Build.0 = Release|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|iPhone.ActiveCfg = Release|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|iPhone.Build.0 = Release|iPhone
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {5CB65EC5-5533-4E4A-B31C-F4320A648341}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|Any CPU.Build.0 = Release|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|iPhone.Build.0 = Release|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {62CB0D3F-DD9D-4CEC-A286-6BDC4B31B726}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|Any CPU.Build.0 = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|iPhone.Build.0 = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {932823BE-C1C5-475D-A752-15EBDBAC6A63}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|iPhone.Build.0 = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {9672DE6E-A5F8-41FF-8250-E341ABFAEBFB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/PropertyDependencyDemo/PropertyDependencyDemo/Mvvm/DelegateCommand.cs b/PropertyDependencyDemo/PropertyDependencyDemo/Mvvm/DelegateCommand.cs
new file mode 100644
index 0000000..a192a1e
--- /dev/null
+++ b/PropertyDependencyDemo/PropertyDependencyDemo/Mvvm/DelegateCommand.cs
@@ -0,0 +1,175 @@
+using System;
+using System.Windows.Input;
+using System.Threading.Tasks;
+
+namespace PropertyDependencyDemo.Mvvm
+{
+ ///
+ /// Defines an implementation wrapping an .
+ ///
+ public class DelegateCommand : ICommand
+ {
+ bool _inFlight;
+ readonly Func