如何将自定义项添加到listbox wpf C#

如何将自定义项添加到listbox wpf C#,c#,wpf,C#,Wpf,我想在程序的列表框中添加自定义项,因此我有以下xaml代码: <ListBox Name="lb" Background="{x:Null}" > <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <Grid> <Grid

我想在程序的列表框中添加自定义项,因此我有以下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>
在mainwindow类中,我有以下代码:

    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;
    }
string path\=string.Format(@“C:\Users\{0}\Documents\folder path”,Environment.UserName);
列表itms=新列表();
公共主窗口()
{
初始化组件();
字符串[]arr=Directory.GetFiles(路径为“.emi”);
地址列表(arr);
}
私有void AddToList(字符串[]a)
{
foreach(a中的字符串s)
{
字符串fl;//第一行
字符串sl;//第二行
使用(StreamReader read=新的StreamReader))
{
fl=read.ReadLine();
sl=read.ReadLine();
}
Add(newitem(){Num=(itms.Count+1).ToString(),Name=sl,Pth=fl,EnterBtn=fl+sl});
}
lb.ItemsSource=itms;
}
我只想读取扩展名为(.emi)的文本文件,并将该数据更新到列表框

问题是什么都没有发生,(.emi)文件确实存在

因此,我的代码中是否存在任何问题?

“.emi”
将只查找准确完整名称为
“.emi”
的文件。您需要
“*.emi”
——
*
表示“此部分可以是零个或多个字符的任意序列”,不是文件扩展名

string[] arr = Directory.GetFiles(path_, "*.emi");
“.emi”
将只查找准确完整名称为
“.emi”
的文件。您需要
“*.emi”
——
*
表示“此部分可以是零个或多个字符的任意序列”,不是文件扩展名

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

AddToList()
中的
foreach
上放置断点。运行应用程序,当它在断点处停止时,将鼠标悬停在
a
上。
a.Length
等于什么?在
AddToList()中的
foreach
上放置一个断点。运行应用程序,当它在断点处停止时,将鼠标悬停在
a
上。
a.Length
等于多少?