在WP7上将映像设置为本地资源

时间:2011-06-13 09:27:33

标签: xaml windows-phone-7

首先我要说的是,我已经尝试了this并查看了this(这只是第一个问题)。这些都是WPF的绝佳解决方案。正如我们所知道的那样,Windows Phone 7缺少一些不错的边缘情况。

我的项目似乎注定缺乏动态图像。我有一个标签,我试图绑定到资源文件,它无法正常工作。我尝试了以下两种方法,似乎都没有效果。

首先,流行的转换器。获取URI字符串并返回位图图像。显然它适用于WPF,但我不能使它工作。

   public class BitmapImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType,
                              object parameter, CultureInfo culture)
        {
            try
            {
                return new BitmapImage(new Uri((string)value));
            }
            catch
            {
                return new BitmapImage();
            }
        }

        public object ConvertBack(object value, Type targetType,
                                  object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

然后是BitmapImage属性。真的没想到这个会起作用,也没有让人失望。

    public BitmapImage ImgSource 
    { 
        get
        {
            // ImgURI is a URI to the image.
            BitmapImage newImg = new BitmapImage(new Uri(ImgURI));
            // Tried ALL the creation options. :(
            //newImg.CreateOptions = BitmapCreateOptions.None;

            return newImg;
        }
    }

这是我用于转换器的XAML(在别处定义)....

        <Image Name="imgMap"
                VerticalAlignment="Center"
                HorizontalAlignment="Center"
                Source="{Binding ImgURI, Mode=OneWay, Converter={StaticResource bitmapConverter}}" 
                    Stretch="None"/>

我调试了它,以至于我知道每个绑定都返回它应该的内容。调用转换器并执行我认为应该执行的操作。 ImgURI总是返回格式为“/MyNamespace ;component/Images/MyImg.jpg”的字符串,ImgSource总是一个bitmapImage。所有图像都有一个BuildAction“资源”。

我希望我遗漏了一些明显的东西。感谢您查看我的问题,如果需要进一步的信息,请发表评论。

2 个答案:

答案 0 :(得分:3)

您应该使用Content而非Resource的构建操作。

答案 1 :(得分:1)

我怀疑这是您的问题,但请确保您将UriKind.Relative传递给Uri构造函数。