我有一个程序用于搜索符合特定条件的目录文件。由于这个搜索过程需要很长时间,因此我必须以异步方式调用它。当搜索算法找到一个文件时,它会触发一个事件。我的 MainWindow 实例监听此事件,并需要更新 GUI。如何将这些“添加”的文件绑定到 ListView?我认为可以使用 ObservableCollection 实例,但我无法弄清如何绑定。
我已经剥离了所有无关的控件和代码。以下是两个相关文件。
MainWindow.xaml:
我已经剥离了所有无关的控件和代码。以下是两个相关文件。
MainWindow.xaml:
<Window x:Class="Example.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="CR Search" Height="395" Width="525">
<Grid>
<ListView x:Name="Results">
<ListView.View>
<GridView>
<GridViewColumn Header="Filename"/>
<GridViewColumn Header="Directory"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
MainWindow.xaml.cs:
using System.IO;
using System.Threading.Tasks;
public partial class MainWindow
{
private SearchLogic _backgroundSearch;
private async void Search(object sender, RoutedEventArgs e)
{
// TODO: clear Results
_backgroundSearch = new SearchLogic("", new DirectoryInfo("C:\"));
_backgroundSearch.FileAdded += FileAdded;
await Task.Run(new Action(_backgroundSearch.Search));
}
private void FileAdded(object sender, FileAddedEventArgs eventArgs)
{
// TODO: add eventArgs.File to Results
// eventArgs.File is an instance of FileInfo
}
}
FileInfo
是可变的,并且在将其添加到列表后更改其属性,则必须在其上实现INotifyPropertyChanged
,以便 UI 更新。 - parapura rajkumarSystem.IO.FileInfo
类。话虽如此,你为什么要使用ListBox
而不是ListView
呢? - Tyler Crompton