2017-09-06 101 views
0

我有一個文件菜單,在加載時,一些menuItems從目錄中的文件名填充。WPF動態菜單項創建錯誤

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

//負載(代碼後面)

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); 
} 

這是偉大的工作,直到剛纔,而現在它不會編譯,拍擊:

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

與:

Exception thrown: 'System.Windows.Markup.XamlParseException' in PresentationFramework.dll 

Additional information: The invocation of the constructor on type 'Form_beta.MainWindow' that matches the specified binding constraints threw an exception. 

如果我註釋掉代碼和代表蕾絲是:

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

它工作正常,並返回我期望的文件路徑。

這裏出了什麼問題?謝謝。

回答

1

這可能只是意味着它拋出了一個異常,然後你沒有在ctor中調用Initialize()。也許是因爲它在GetFiles()上返回null?

嘗試在Windows-> Exceptions下打開CLI例外,並勾選該方框。然後它應該打破例外。

+0

啊,謝謝。目錄中有一個文件,名稱中有一個空格,該文件不能用作menuItem的標題。 – anti

0

已解決。該異常是由目錄中的文件引起的,名稱中有一個空格,該文件不能用作menuItem的標題。