変更されたグローバルプロパティによって送信されるオブジェクトとして新しい変数を初期化するときに問題が発生します。私はBeltConfiguration
とBeltProperty
の2つのクラスを持っています(どちらのクラスもINotifyPropertyChanged
です)。私はここに見られるようにBeltConfiguration
クラスにglobalpropertychanged
メソッドを持っています。 BeltProperty
クラスでグローバルプロパティ変更されたオブジェクトキャストの結果がnullになる(C#で)
private void BeltProperty_GlobalPropertyChanged(object sender, PropertyChangedEventArgs e)
{
BeltProperty validBelt = sender as BeltProperty;
if (validBelt != null)
{
this.Validation = validBelt.Validation;
}
switch (e.PropertyName)
{
case "Value":
this.Validation.ValidState = ConfigurationValid.Unknown;
OnPropertyChanged("Validate");
break;
case "ConfigurationInvalid":
this.Validation.ValidState = ConfigurationValid.False;
OnPropertyChanged("Validate");
break;
}
}
、私はしかしOnGlobalPropertyChanged("ConfigurationInvalid");
でこれを呼んで、私はそれを呼び出す際に、関係なく、私は何をすべきか、validBelt
は常にnull
ことになりません。コードをステップ実行してオブジェクトの送信者を調べましたが、宣言方法GenericParametersAttributes
とGenericParametersPosition
が例外System.InvalidOperationException
を投げたと言います。 validBelt
が送信者をBeltProperty
として受け付けない理由とは関係があるかどうかはわかりません。あなたが私に与えることができる助けや助言をありがとう。
ここでは、Belt PropertyクラスでBeltProperty_GlobalPropertyChangedを呼び出しました。 validBelt
はこの割り当て後null
とき
BeltProperty validBelt = sender as BeltProperty
が、それは、送信者がBeltProperty
のインスタンスにキャストすることはできません意味:あなたはここに安全なキャストを使用しているので
private ConfigurationValidation _Validation = new ConfigurationValidation(ConfigurationValid.Unknown, "", "", null);
/// <summary>
/// Stores information as to wether this belt property is valid or invalid, and the details.
/// </summary>
internal ConfigurationValidation Validation
{
get { return _Validation; }
set {
_Validation = value;
if(_Validation.ValidState == ConfigurationValid.False)
{
OnGlobalPropertyChanged("ConfigurationInvalid");
}
}
}
/// <summary>
/// A global on property change that runs for any instantiated object of this type.
/// </summary>
/// <param name="name"></param>
static void OnGlobalPropertyChanged(string name)
{
GlobalPropertyChanged(
typeof(BeltProperty),
new PropertyChangedEventArgs(name));
}
はねえ、それは働きました!助けてくれてありがとう。 GlobalPropertyChangedを変更することは、私がする必要があったものです。 – andrewvb