gpt4 book ai didi

c# - 在 Silverlight 中显示文件类型图标

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:42 24 4
gpt4 key购买 nike

在这种情况下,我需要在 Silverlight 应用程序中显示从 Sharepoint 站点提取的一堆文件。我使用 WCF 服务从 Sharepoint 站点获取数据。

所以我拥有的是具有相应扩展名的文件名。我需要做的是,在 Silverlight 应用程序中显示文件及其相应的文件类型图标和文件名。以下是我用来在 Silverlight 应用程序中显示文件的分层数据模板。

<sdk:HierarchicalDataTemplate x:Key="FileTemplate">
<StackPanel Orientation="Vertical">
<Image x:Name="imgFile" Source="{Binding FileImage}" Height="35" ></Image>
<TextBlock x:Name="txtFile" Text="{Binding FileName}"></TextBlock>
</StackPanel>
</sdk:HierarchicalDataTemplate>

其中 FileImage 和 FileName 是字符串。

PS:我没有文件类型和大小的原因是因为我使用 Sharepoint 网络服务和 XMLReader 来获取有关文件的信息。

最佳答案

除了维护文件扩展名到我们自己的文件图标的内部映射的明显解决方案外,我能想到的唯一其他解决方案是您回调服务器以获取文件类型的图像。

有一个名为 SHGetFileInfo 的 native shell 函数它可以提供文件的文件信息。请注意,如果您使用 SHGFI_USEFILEATTRIBUTES 标志,则该文件不必实际存在于服务器上。当然,问题是您需要使用 P/Invoke 来实际调用此函数,因为它在标准 .NET 库中不作为托管函数存在。

下面的 Microsoft 知识库文章应该可以帮助您了解如何从 .NET 调用 SHGetFileInfo。 How to use the SHGetFileInfo function to get the icons that are associated with files in Visual C# .NET

关于使用 P/Invoke 调用 SHGetFileInfo 的更多详细信息,您还可以看到以下 URL,它包括所有标志的定义。

http://www.pinvoke.net/default.aspx/shell32.SHGetFileInfo

注意:因为 Silverlight 不直接支持 ICO 文件,所以您需要一个 ICO 图像解码器。我自己没有尝试过此代码,但您可以尝试 Joe Stegman 位于其博客上的代码。

http://blogs.msdn.com/b/jstegman/archive/2009/09/13/silverlight-ico-icon-decoder-parser.aspx

关于c# - 在 Silverlight 中显示文件类型图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com