2017-09-06 3 views
0

Ich habe ein Dateimenü, wo beim Laden einige menuItems von Dateinamen in einem Verzeichnis aufgefüllt werden.WPF dynamic menuItem-Erstellungsfehler

<MenuItem 
    x:Name="LayoutLoad" 
    Header="Load saved layout" 
    HorizontalAlignment="Left" 
    Width="200" 
    /> 

// auf Last (Code-behind)

string[] filePaths = Directory.GetFiles("Settings/layouts"); 
for (int i = 0; i < filePaths.Count(); i++) 
{ 
    MenuItem item = new MenuItem { 
     Header = System.IO.Path.GetFileName(filePaths[i]), 
     Name = System.IO.Path.GetFileName(filePaths[i]) 
    }; 
    item.Click += new RoutedEventHandler(Chooselayout); 
    LayoutLoad.Items.Add(item); 
} 

Dies funktionierte großartig, bis vor einem Augenblick, und jetzt wird es nicht kompilieren, stürzt auf:

MenuItem item = new MenuItem { 
      Header = System.IO.Path.GetFileName(filePaths[i]), 
      Name = System.IO.Path.GetFileName(filePaths[i]) 
     }; 

mit :

Wenn ich diesen Code und rep auskommentieren Spitze mit:

string test = System.IO.Path.GetFileName(filePaths[i]);

Es funktioniert gut und gibt den filepath ich erwarten würde.

Was ist hier schief gelaufen? Vielen Dank.

Antwort

1

Es bedeutet wahrscheinlich nur, dass es eine Ausnahme ausgelöst hat und dann haben Sie Initialize() im Ctor nicht aufgerufen. Vielleicht, weil es bei GetFiles() null zurückgegeben hat?

Versuchen Sie, Ausnahmen für CLI unter Windows-> Ausnahmen einzuschalten, und kreuzen Sie dieses Kästchen an. Dann sollte es bei den Ausnahmen brechen.

+0

Ah, danke. Es gab eine Datei im Verzeichnis mit einem Leerzeichen im Namen, das nicht als Kopfzeile für das Menüelement verwendet werden konnte. – anti

0

Gelöst. Die Ausnahme wurde durch eine Datei im Verzeichnis mit einem Leerzeichen im Namen verursacht, das nicht als Überschrift für das Menüelement verwendet werden konnte.