我有以下内容:
文件:UserControlTest.xaml
<UserControl
x:Class="MySolution.Views.UserControlTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MySolution.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:MySolution.ViewModels"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">
<UserControl.DataContext>
<viewModels:MyViewModel/>
</UserControl.DataContext>
<Grid />
</UserControl>
文件:MyViewModel .cs
namespace MySolution.ViewModels
{
public class MyViewModel : NotifyPropertyChanged
{
try
{
var test = Global.Test;
}
catch (Exception ex)
{
LogHelper.WriteLogFile(ex);
}
}
}
文件:Global.cs
namespace Expert.Engine
{
public class Global
{
public static string Test { get; set; } = "Test Value";
}
}
当我调试XAML(附加到进程菜单=&gt; XDesProc.exe相对于上面的xaml文件)时,调试器在MyViewModel .cs中的Global.Test访问上触发'System.TypeInitializationException':
try
{
var test = Global.Test;
}
catch (Exception ex)
{
LogHelper.WriteLogFile(ex);
}
有谁知道为什么它不起作用?似乎CLR还没有定义静态类,但它是如何使它工作的?
答案 0 :(得分:0)
感谢您的帮助。 问题解决了 : 最后是由于对象初始化期间Null值的问题。 设计师无法解析一个对象,因此我收到了一条错误消息。
答案 1 :(得分:-1)
您可以在文件“Global.cs”
中尝试此更改 public class Global
更改public static class Global