我在初始化新變量時遇到了一些麻煩,因爲由全局屬性發送的對象發生了更改。我有兩個類BeltConfiguration
和BeltProperty
(兩個類都有INotifyPropertyChanged
)。如在此處所示,我在BeltConfiguration
課程中有globalpropertychanged
方法。全局屬性更改對象投射結果爲空(在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;
}
}
在BeltProperty
類,我OnGlobalPropertyChanged("ConfigurationInvalid");
但是調用這個,當我打電話吧,不管我做什麼,validBelt
結果總是在被null
。我通過逐步查看代碼來查看對象發件人,並說它的聲明方法GenericParametersAttributes
和GenericParametersPosition
引發了System.InvalidOperationException
的例外。我不知道這是否與validBelt
不接受發件人爲BeltProperty
有什麼關係。感謝您提供的任何幫助或建議。
這是我在Belt Property類中調用BeltProperty_GlobalPropertyChanged的地方。
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