2017-10-19 28 views
0

I ont les suivantes:XAML 'System.TypeInitializationException' en mode design avec propriété statique

fichier: 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> 

fichier: MyViewModel .cs

namespace MySolution.ViewModels 
{ 
    public class MyViewModel : NotifyPropertyChanged 
    { 
     try 
     { 
      var test = Global.Test; 
     } 
     catch (Exception ex) 
     { 
      LogHelper.WriteLogFile(ex); 
     } 
    } 
} 

Fichier: Global.cs

namespace Expert.Engine 
{ 
    public class Global 
    { 
     public static string Test { get; set; } = "Test Value"; 
    } 
} 

Lorsque i déboguer le XAML (fixation à traiter Menu => XDesProc.exe par rapport au fichier XAML ci-dessus), le débogueur tire un 'System.TypeInitializationException' sur l'accès Global.Test dans MyViewModel .cs:

try 
{ 
    var test = Global.Test; 
} 
catch (Exception ex) 
{ 
    LogHelper.WriteLogFile(ex); 
} 

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas? Il semble que le CLR n'a pas encore défini la classe Static, mais comment la faire fonctionner?

+0

Et 'Global.Test' est-il aussi simple que cela est dit en question? En outre, rien dans l'exception interne de TypeInitializationException? – Evk

+0

Vous ne savez pas si cela fonctionne avec XAML, mais vaut la peine d'essayer: https://stackoverflow.com/questions/13698388/how-to-troubleshoot-and-debug-visual-studio-design-mode-errors/13698442#13698442 – user6144226

Répondre

0

Merci pour votre aide. Problème résolu: Il était finalement dû à un problème de valeur nulle lors de l'initialisation de l'objet. Le concepteur n'a pas pu résoudre un objet, alors j'ai reçu un message d'erreur.

-1

Vous pouvez essayer ce changement votre code dans le fichier "Global.cs"

public class Global changement, il public static class Global