添加图片F#

TS-*_*TS- 3 silverlight f#

我有一个堆栈面板,我想动态添加一些图标.

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

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

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

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
Run Code Online (Sandbox Code Playgroud)

现在我做的时候:

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)
Run Code Online (Sandbox Code Playgroud)

我可以看到文本之间有一个空白区域,好像那里有一个空图像.所以我的猜测是我解决图像路径的方式有问题 - 但我不确定原因.

思考?

谢谢!

Ste*_*nev 5

如果你的gif的Build Action是Resource,那么解决它的正确方法是/SilverlightApplication1;component/path/to/file.gif.SilverlightApplication1是Silverlight应用程序的名称

如果它的构建操作是内容,那么它的正确地址是/path/to/file.gif,在创建时始终带有前导斜杠BitmapImage.

查看Silverlight 2:揭示应用程序资源的URI引用,以获取更多信息.

为了更容易调试图像加载问题,请挂钩BitmapImage.ImageFailed事件并查看出现的错误类型.

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