2014-09-11 71 views
-3

我想在我的列表視圖中顯示* .ps1文件名。在ListView中顯示對象名稱?

XAML:

<ListView x:Name="script_pick" Height="102" Loaded="Scripts_Loaded" ItemsSource="{Binding Name}"/> 

我這樣做是正確的,我的方法?所有顯示的是在列表視圖中的WpfApplication2.Script,當只有兩個文件時有四個項目。

private void Scripts_Loaded(object sender, RoutedEventArgs e) 
     { 

      var txtFiles = Directory.EnumerateFiles(Directory.GetCurrentDirectory() + @"\Scripts", "*.ps1"); 
      var scriptList = new List<Script>(); 

     foreach (string currentFile in txtFiles) 
     { 
      using (StreamReader sr = new StreamReader(currentFile, true)) 
      { 
       script_pick.Items.Add(new Script { Name = System.IO.Path.GetFileName(currentFile), 
                ScriptCode = sr.ReadToEnd()}); 

       sr.Close(); 
      } 

     } 
    } 
+0

你在哪裏設置ItemsSource? – xmashallax 2014-09-11 09:54:31

+0

我想你正在使用像Caliburn這樣的名字,就是你綁定的名字。無論如何,你不能設置itemssource = {綁定名稱} ...你可能想要的是爲列表視圖的每個項目設置一個itemtemplate – sexta13 2014-09-11 10:17:49

+0

試過,它的工作。剩下的唯一問題就是每個文件在GUI中顯示兩次的原因。該方法必須被稱爲別的地方,還沒有想出什麼地方:) – OHMR 2014-09-11 10:38:26

回答

0

你應該將listView綁定到目標集合,我猜這是script_pick.Items。

然後你有一個聰明的方法:爲Script類添加一個數據模板,以便xaml知道如何顯示它。

或者你可以使用懶惰(快)的方式:只需重寫的ToString()的腳本類,以顯示你想要什麼(Script.Name):)

順便說一句,你不需要關閉的StreamReader在使用塊。

+0

datatemplate做的伎倆,謝謝! – OHMR 2014-09-11 10:49:36

相關問題