Silverlight 在XAML中绑定图像源
我正试图通过c将一个图像源绑定到我的XAML# 这很有效Silverlight 在XAML中绑定图像源,silverlight,xaml,image,Silverlight,Xaml,Image,我正试图通过c将一个图像源绑定到我的XAML# 这很有效 <Image Source="images/man.jpg"></Image> 这行不通 <Image Source="images/{Binding imagesource}"></Image> 其中,imagesource是此xaml的c#文件中的字符串变量,并被设置为等于“man.jpg”imagesource需要是实际的图像对象,而不是字符串 以下是一种方法,该方法将在给
<Image Source="images/man.jpg"></Image>
这行不通
<Image Source="images/{Binding imagesource}"></Image>
其中,imagesource是此xaml的c#文件中的字符串变量,并被设置为等于“man.jpg”
imagesource
需要是实际的图像
对象,而不是字符串
以下是一种方法,该方法将在给定路径的情况下创建一个新的图像对象:
public BitmapImage Load(string path)
{
var uri = new Uri(path);
return new BitmapImage(uri);
}
不能像那样在值的中间粘贴绑定。要么是装订,要么不是。假设imagesource可通过您的DataContext
公开访问,则可以执行以下操作:
<Image Source="{Binding imagesource}"/>
但是,如果它被设置为“man.jpg”,那么它将找不到图像。将imagesource设置为完整路径(“images/man.jpg”)或使用转换器:
<Image Source="{Binding imagesource, Converter={StaticResource RelativePathConverter}}"/>
转换器将在其值前加上“images/”。但是,转换器可能需要返回图像源
而不是字符串
以下是在XAML中执行此操作的方法:
将以下内容添加到命名空间:
xmlns:System="clr-namespace:System;assembly=mscorlib"
然后添加您的图像路径
<System:String x:Key="ImageRefresh">/Theme;component/Images/icon_refresh.png</System:String>
<System:String x:Key="ImageSearch">/Theme;component/Images/icon_search.png</System:String>
/主题;组件/图像/图标\u refresh.png
/主题;组件/图像/图标搜索.png
这就是你使用它的方式
<Image Height="16" Source="{StaticResource ImageSearch}" Stretch="Uniform" Width="16"/>
这工作正常,但如果在Blend中加载xaml样式,它将是假的
类型为“System.String”的对象无法应用于需要类型为“System.Windows.Media.ImageSource”的属性
我还没有弄明白,如何用那个媒体替换系统:字符串。ImageSource。。。但是嘿。。在VisualStudio中它对我很有用。过去,图像一直在折磨我。涉及到特定的查找顺序
当您使用“image/man.jpg”时,它可能引用silverlight xap中的文件,或者相对于xap文件的位置。例如,它可能位于YourProject.Web/ClientBin/image/man.jpg中
您应该首先使用完整的URL进行故障排除,并确定这是否有效。我将imagesource更改为完整路径“images/man.jpg”,但它仍然不起作用。在DataContext中公开访问它是什么意思?我把它的访问修饰符改为public,并为它设置了get函数,但仍然不起作用。你的DataContext是什么?你定好了吗?在Visual Studio的输出窗口中查找绑定错误。Image.Source属性不是字符串,因此这将不起作用。@Digital外科医生:因此,我的答案中的最后一句话。由于某种原因,这不起作用。我的应用程序拒绝加载,只是停留在100%你尝试了完整路径还是相对路径?应该是完整路径。另外,我知道我的方法可以在WPF中工作……也许出于某种原因,它不能在Silverlight中工作。ImageSource作为静态资源在Visual Studio 2012中工作。