2017-03-06 53 views
-1

我有一个C#/ .net/WPF/MVVM应用程序。如何在我的WPF/MVVM应用程序中调试“DependencyProperty.UnserValue”异常?

应用程序通过VS 2015

运行时,当我运行应用程序独立的(不同的机器上)运行正常, 我得到下面的异常在启动时:

未处理的异常键入“System.InvalidOperationException” 发生在WindowsBase.dll中

其他信息“{DependencyProperty.UnserValue}”属性的值不是有效的 “TopLevelItem TemplateKey“

究竟发生了什么?

如何调试?

谢谢

+0

看一看什么是绑定到'TopLevelItemTemplateKey'财产。我想它可能是你没有默认值注册的依赖项属性。在这种情况下,只需为元数据添加一个默认值:'DependencyProperty.Register(“State”,typeof(Boolean),typeof(MyStateControl),new PropertyMetadata(false));' – nevermind

回答

0

您是否直接返回您的依赖关系值?好的方式是,以测试变量是否与ObservableCollection这里返回它的一个例子之前空:

public ObservableCollection<YourObject> _ocYourObject; 
    public ObservableCollection<YourObject> ocYourObject{ 
     get { 
      if (_ocYourObject == null) { 
       _ocYourObject = new ObservableCollection<YourObject>(); 
      } 
      return _ocYourObject; 
     } 
     set { 
      if (_ocYourObject!= value) { 
       _ocYourObject= value; 
       PropertyChanged(this, new PropertyChangedEventArgs(nameof(ocYourObject))); 
      } 
     } 
    } 
+0

安全:看起来很奇怪当我在VS调试器中时发生。我有几个Observable集合。我会经历并改变它们,看看它是否能解决它。 – JohnB

+0

这可能发生在任何物体上。你应该使用log4net这样的日志框架来记录异常,看看你的错误在哪一行 – Safe

+0

安全:完全忘记了log4net。 Thx,我会加入log4net。 – JohnB

相关问题