2017-03-10 96 views
0

我想添加自定義項目列出我的程序框,所以我有這樣的XAML代碼:如何添加自定義的項目列表框WPF C#

<ListBox Name="lb" Background="{x:Null}" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <Grid> 
         <Grid.ColumnDefinitions>                                                                                
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="*"/> 
         </Grid.RowDefinitions> 
         <TextBlock Text="{Binding Num}" Grid.Column="0" Grid.RowSpan="2" Grid.Row="0"/> 
         <TextBlock Text="{Binding Pth}" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="3"/> 
         <TextBlock Text="{Binding Name}" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="3"/> 
         <Button Content="{Binding EnterBtn}" Grid.Column="4" Grid.RowSpan="2"/> 

        </Grid> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

,我有這個類:

public class Item 
{ 
    public string Pth { get; set; } 
    public string Num { get; set; } 
    public string Name { get; set; } 
    public string EnterBtn { get; set; } 
} 

而在主窗口類我有這樣的代碼:

string path_ = string.Format(@"C:\Users\{0}\Documents\folder path", Environment.UserName); 
    List<Item> itms = new List<Item>(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
     string[] arr = Directory.GetFiles(path_, ".emi"); 
     AddToList(arr); 

    } 
    private void AddToList(string[] a) 
    { 
     foreach(string s in a) 
     { 
      string fl;//first line 
      string sl; //second line 
      using(StreamReader read = new StreamReader(s)) 
      { 
       fl = read.ReadLine(); 
       sl = read.ReadLine(); 
      } 
      itms.Add(new Item() { Num = (itms.Count + 1).ToString(), Name = sl, Pth = fl, EnterBtn = fl + sl }); 
     } 
     lb.ItemsSource = itms; 
    } 

所有我想要的是讀到過(.emi)擴展,和更新T上的文本文件帽子數據列表框。

問題是沒有任何反應,(.emi)文件確實存在。

那麼有沒有在我的代碼的任何問題

+0

在'AddToList()'的'foreach'處放置一個斷點。運行應用程序,當它停在斷點處時,將鼠標懸停在'a'上。什麼是「長度」等於? –

回答

0

".emi"只能找到文件,其準確完整名稱是".emi"。你想要"*.emi" - *的意思是「這部分可以是零個或多個字符的任何序列」。 That parameter is a "search pattern",而不是文件擴展名。

string[] arr = Directory.GetFiles(path_, "*.emi"); 
+0

謝謝你...我沒有專注於:P –