 <p>In the XAML you're setting the property to the default value which will not cause the <code>PropertyChanged</code> handler to fire. The boilerplate Get and Set methods will never be called unless you call them from code because properties set in XAML call <code>GetValue</code> and <code>SetValue</code> directly (as is the case with wrapper properties on a normal DP).</p> <p>To ensure the change handler is always called when a value is set you could use a <code>Nullable&lt;HorizontalAlignment&gt;</code> instead and set the default to <code>null</code>.</p>