我希望获取某个文件夹中的所有文件,并将它们显示在WPF的ListView中。
我有以下内容:
XAML
<ListBox Name="MyListBox"">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
代码背后
string location = AppDomain.CurrentDomain.BaseDirectory + "MyApp\\Documents\\";
string[] myFiles = Directory.GetFiles(location, "*.pdf")
.Select(path => Path.GetFileName(path).Replace(".pdf",""))
.ToArray();
MyListBox.ItemsSource = myFiles;
这会列出我的列表框中的所有文件。
我想要做的是为列表中的每个项目添加一个CLick处理程序并调用一个函数并传入单击项目的文本。
我该怎么做?
答案 0 :(得分:2)
如果它不是MVVM,那么您可以定义一个带有处理程序的按钮,该按钮存在于代码库中。在每个按钮上单击将执行相同的处理程序。现在问题是如何注入文件Name。因此,您可以在按钮的Tag对象中添加文件Name,可以在处理程序后面的代码中读取,以便进一步处理。
XAML
<ListBox Name="MyListBox"">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
<Button Click="Open_Click" Tag="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
处理程序背后的代码
void Open_Click(object sender, EventArgs e)
{
var button = sender as Button;
var filename = Convert.ToString(button.Tag); // File Name
}
答案 1 :(得分:2)
只需在ListBox中添加事件:
NULL