我目前有一个数据网格,它可以根据服务器文件结构从我的数据库中获取结果。因此,我们创建 PDF 和 PPT,将它们加载到目录中,并相应地将它们添加到该数据库中。然后用户可以搜索他们需要的内容,结果会显示在我的数据网格中。有两列具有与该特定作品的每个 PDF 和 PPT 相关的图像超链接按钮。
然后,当用户单击 PDF 图标或 PPT 图标时,它会在另一个窗口中显示高分辨率片段。那里没有问题,但现在我想要它,以便当用户将鼠标悬停在图标上时,它会在 toptip 内显示高分辨率片段的预览。我可以将图像硬编码到工具提示中没有问题。因此,在这方面,我们创建了每个 PDF/PPT 的小缩略图预览图像。它们的大小都正确并准备就绪,我只需要将位置绑定到工具提示,以便它基本上显示每个高分辨率文档的“缩略图”预览。
这是我的 XAML:
<sdk:DataGridTemplateColumn x:Name="imageColPdf" Header="PDF" Width="SizeToHeader" IsReadOnly="False">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<HyperlinkButton HorizontalAlignment="Center" VerticalAlignment="Center" DataContext="{Binding Path=FileName}" Click="HyperlinkButtonPDF_Click" >
<Image Source="/PrintOnDemand;component/Images/16x16/page_white_acrobat.png" Stretch="None" HorizontalAlignment="Center" ></Image>
<ToolTipService.ToolTip>
<ToolTip>
<ToolTip.Content>
<Image DataContext="{Binding Path=FileName}" Name="LoadPDFImage" Loaded="PDFImageToolTip"/>
</ToolTip.Content>
</ToolTip>
</ToolTipService.ToolTip>
</HyperlinkButton>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
然后这里是工具提示加载图像事件的代码隐藏:
private void PDFImageToolTip(object sender, RoutedEventArgs e)
{
string docname = ((System.Windows.FrameworkElement)((e.OriginalSource as Image).DataContext)).ToString();
string baseUri = "http://localhost:51840/ShowDocument.aspx?DocumentName=" + docname + "&type=pdfjpg";
var hostingWindow = HtmlPage.Window;
hostingWindow.Navigate(new Uri(baseUri, UriKind.Absolute), "_blank");
}
我在单击事件上执行此方法来调用高分辨率文档,但是当我尝试通过工具提示加载图像时,每次调试(System.NullReferenceException)并且对象引用未设置为实例时都会出错一个东西。似乎无法获得图像的正确文件名/源路径。每次在字符串 docname 上都会失败。好的,我的问题是,我怎样才能让它正确地通过并显示我们已经设置的图像。