具有静态属性的设计模式下的XAML'System.TypeInitializationException'

时间:2017-10-19 10:11:02

标签: c# wpf xaml static

我有以下内容:

文件: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还没有定义静态类,但它是如何使它工作的?

2 个答案:

答案 0 :(得分:0)

感谢您的帮助。 问题解决了 : 最后是由于对象初始化期间Null值的问题。 设计师无法解析一个对象,因此我收到了一条错误消息。

答案 1 :(得分:-1)

您可以在文件“Global.cs”

中尝试此更改

public class Global更改public static class Global