silverlight - 添加图像 F#

标签 silverlight f#

我有一个堆栈面板,我想向其中动态添加一些图标。

如果我将一个 TextBlock 添加到堆栈面板,它会完美地工作:

// assuming stackPanel is my stack panel
let text = new TextBlock()
text.Text <- "Test"
stackPanel.Children.add(text)

然而,我的目标是添加图像,但似乎无法解析图像

let getImageSource(imagePath) = 
    let uri = new Uri(imagePath, UriKind.Relative)
    new BitmapImage(uri); 

let icon = new Image()
icon.Source <- getImageSource("images/fileIcon/icon.gif")

stackPanel.Children.Add(icon) // this doesnt work

现在当我这样做的时候:

let icon = new Image()
icon.Source <- getImageSource("images/fileIcon/icon.gif")

stackPanel.Children.Add(icon) 

let text = new TextBlock()
text.Text <- "Test"
stackPanel.Children.add(text)

我可以看到文本之间有一个空白区域,就好像那里有一个空白图像一样。 所以我猜我解析图像路径的方式有问题 - 但我不确定为什么。

想法?

谢谢!

最佳答案

如果您的 gif 的构建操作是资源,那么解决它的正确方法是 /SilverlightApplication1;component/path/to/file.gif。这里 SilverlightApplication1 是您的 silverlight 应用程序的名称

如果 Build Action 是 Content,那么它的正确地址是 /path/to/file.gif,在创建 BitmapImage 时始终以斜线开头。

查看 Silverlight 2: Demystifying URI references for app resources 获取更多信息。

为了更轻松地调试图像加载问题, Hook 到 BitmapImage.ImageFailed 事件并查看会出现哪种错误。

最后一点,AFAIK Silverlight 不支持 GIF 格式。您可以改用 PNG。

关于silverlight - 添加图像 F#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247770/

相关文章:

F# - 损坏 "then"

f# - 如何在模拟类似 Haskell 解决方案的 F# 中编写可变参数函数?

c# - Silverlight 应用程序中的 F# 库?

c# - 检查DateTime是否在特定范围内

c# - 如何检查互联网连接是否丢失 WP7

F#递归函数退出?

f# - Fsharp.Data XmlProvider 对 DateTime 的类型推断不正确

.net - 如何模拟 RIA 服务

Silverlight 图像拉伸(stretch) ="Uniform"纵向尺寸图像失败

list - 将不同的函数映射到列表中的第一个和最后一个元素