我有一个堆栈面板,我想向其中动态添加一些图标。
如果我将一个 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/