public Page()
{
if (CatelEnvironment.IsInDesignMode)
{
return;
}
_logic = new PageLogic(this);
_logic.TargetViewPropertyChanged += (sender, e) =>
{
#if !NET
// WPF already calls this method automatically
OnPropertyChanged(e);
PropertyChanged.SafeInvoke(this, e);
#else
// Do not call this for ActualWidth and ActualHeight WPF, will cause problems with NET 40
// on systems where NET45 is *not* installed
if (!string.Equals(e.PropertyName, "ActualWidth", StringComparison.InvariantCulture) &&
!string.Equals(e.PropertyName, "ActualHeight", StringComparison.InvariantCulture))
{
PropertyChanged.SafeInvoke(this, e);
}
#endif
};
_logic.ViewModelChanged += (sender, e) => RaiseViewModelChanged();
_logic.ViewModelPropertyChanged += (sender, e) =>
{
OnViewModelPropertyChanged(e);
ViewModelPropertyChanged.SafeInvoke(this, e);
};
Loaded += (sender, e) =>
{
_viewLoaded.SafeInvoke(this);
OnLoaded(e);
};
Unloaded += (sender, e) =>
{
_viewUnloaded.SafeInvoke(this);
OnUnloaded(e);
};
this.AddDataContextChangedHandler((sender, e) => _viewDataContextChanged.SafeInvoke(this, () => new Catel.MVVM.Views.DataContextChangedEventArgs(e.OldValue, e.NewValue)));
}
#endregion