/// <summary> /// senderに指定のプロパティが存在するか調べます。 /// </summary> private void VerifyProperty(object sender, PropertyChangedEventArgs e) { if (sender == null) { throw new ArgumentNullException("sender"); } if (e == null || string.IsNullOrEmpty(e.PropertyName)) { throw new ArgumentException( "プロパティ名がありません。", "e"); } #if !RGN_DYNAMICVIEWMODEL // 変更通知の対象となるプロパティを取得します。 var propertyDic = MethodUtil.GetPropertyDic(sender.GetType()); if (propertyDic == null) { throw new RagnarokException( "プロパティリストが取得できませんでした。"); } if (!propertyDic.ContainsKey(e.PropertyName)) { throw new InvalidOperationException( string.Format( "型'{0}'にプロパティ'{1}'は存在しません。", sender.GetType(), e.PropertyName)); } #endif }
/// <summary> /// オブジェクトが持つ全プロパティの変更を通知します。 /// </summary> /// <remarks> /// 重複したプロパティに対して通知が出されることがあります。 /// </remarks> public void RaiseAllPropertyChanged(object target) { var properties = MethodUtil.GetPropertyDic(target.GetType()); foreach (var property in properties) { if (target == this) { this.RaisePropertyChanged(property.Key); } else { this.DependModel_PropertyChanged( target, new PropertyChangedEventArgs(property.Key)); } } }