1
我创建了一个窗口,用户可以选择一个目录,然后此目录中的所有文件都显示在列表框中。每个文件都显示一个复选框和文件名。DataTemplate通过MouseEnter加载工具提示
现在我想显示一个工具提示,如果该文件是“知道”图像文件。到目前为止,我所选择的路径都是加载所有工具提示。这工作正常。但是我有这个问题,如果目录中有很多图像,应用程序变得非常慢。
我在视图列表框中当前的代码如下所示:
<ListBox Grid.Row="1" ItemsSource="{Binding DirectoryItems, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Path=FilePath, Converter={StaticResource directoryItemConverter}}" VerticalAlignment="Center"
VerticalContentAlignment="Center" ToolTip="{Binding Converter={StaticResource directoryItemToolTipConverter}}"
IsChecked="{Binding Upload, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
DirectoryItems是类型UploadFile的一个ObservableCollection。
的上传,文件类:
class UploadFile
{
public UploadFile(string filePath)
{
this.FilePath = filePath;
this.Upload = false;
}
public string FilePath { get; private set; }
public bool Upload { get; set; }
}
的DirectoryItemToolTipConverter,这是在视图中使用的样子:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
UploadFile uploadFile = (UploadFile)value;
string extension = Path.GetExtension(uploadFile.FilePath);
if (extension != null && knownImageExtension.Contains(extension.ToLower()))
{
Bitmap bitmap = new Bitmap(System.Drawing.Image.FromFile(uploadFile.FilePath), previewImageSize, previewImageSize);
Image image = new Image
{
Source = ImageToImageSourceConverter.ConvertBitmap(bitmap),
Width = previewImageSize,
Height = previewImageSize
};
return image;
}
return null;
}
我怎样才能做到这一点的工具提示目前装载,鼠标第一次进入复选框?有没有一种“简单”的方法来实现这一目标?