我开始一个新的Silverlight项目的时刻,我具有的问题通过团结是扔一个例外如果我的视图模型(其它的实例,对我来说)包含RaisePropertyChanged事件。

我看起来像这样:

public class AddNewClientViewModel : ViewModelBase {

    private Visibility _extraClientFieldsVisible;
    public Visibility ExtraClientFieldsVisible {
        get {
            return _extraClientFieldsVisible;
        }
        set {
            _extraClientFieldsVisible = value;
            base.RaisePropertyChanged("ExtraClientFieldsVisible");
        }
    }


public AddNewClientViewModel(IMyInterface blah) {


       ExtraClientFieldsVisible = Visibility.Collapsed;
}

ViewModelBase它将继承这样的:

    public abstract class ViewModelBase : INotifyPropertyChanged {

    public event PropertyChangedEventHandler PropertyChanged;

    public  void RaisePropertyChanged(string propertyName) {
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }


}

全栈跟踪是指出如下,但这似乎是叫RaisePropertyChanged事件期间构造原因统一爆破.

这里的完整堆的丝的错误:

Microsoft.Practices.Unity.ResolutionFailedException was unhandled by user code
Message="Resolution of the dependency failed, type = \"ClientSide.ViewModels.AddNewClientViewModel\", name = \"\". Exception message is: The current build operation (build key Build Key[ClientSide.ViewModels.AddNewClientViewModel, null]) failed: Object reference not set to an instance of an object. (Strategy type BuildPlanStrategy, index 3)"
TypeRequested="AddNewClientViewModel"
 StackTrace:
   at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name)
   at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name)
   at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name)
   at Microsoft.Practices.Unity.UnityContainerBase.Resolve(Type t)
   at Microsoft.Practices.Unity.UnityContainerBase.Resolve[T]()
   at ClientSide.Framework.ServiceLocator.get_AddNewClientViewModel()
InnerException: Microsoft.Practices.ObjectBuilder2.BuildFailedException
   Message="The current build operation (build key Build Key[ClientSide.ViewModels.AddNewClientViewModel, null]) failed: Object reference not set to an instance of an object. (Strategy type BuildPlanStrategy, index 3)"
   BuildKey="Build Key[ClientSide.ViewModels.AddNewClientViewModel, null]"
   ExecutingStrategyIndex=3
   ExecutingStrategyTypeName="BuildPlanStrategy"
   StackTrace:
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.Builder.BuildUp(IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList policies, IStrategyChain strategies, Object buildKey, Object existing)
        at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name)
   InnerException: System.NullReferenceException
        Message="Object reference not set to an instance of an object."
        StackTrace:
             at ClientSide.ViewModels.ViewModelBase.RaisePropertyChanged(String propertyName)
             at ClientSide.ViewModels.AddNewClientViewModel.set_ExtraClientFieldsVisible(Visibility value)
             at ClientSide.ViewModels.AddNewClientViewModel..ctor(IDataCore dataCore)
             at BuildUp_ClientSide.ViewModels.AddNewClientViewModel(IBuilderContext )
             at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
             at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
             at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        InnerException: 

所以我打NullReferenceException.我不能就工作如何...

有帮助吗?

解决方案

为什么不检查空中 RaisePropertyChanged()?

毕竟,这不会造成不良的副作用...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top