如何将自定义项添加到列表框wpf C#

时间:2017-03-10 20:45:09

标签: c# wpf

我想在我的程序中将自定义项添加到列表框中,所以我有这个xaml代码:

<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)扩展名的文本文件,并将该数据更新到列表框。

问题是没有任何反应,(。emi)文件确实存在。

我的代码中有任何问题

1 个答案:

答案 0 :(得分:0)

".emi"只会查找完整名称为".emi"的文件。您想要"*.emi" - *表示“此部分可以是零个或多个字符的任何序列”。 That parameter is a "search pattern",而不是文件扩展名。

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