Ejemplo n.º 1
0
        /// <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
        }
Ejemplo n.º 2
0
        /// <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));
                }
            }
        }