如何在WPF中使用动态URL绑定到图像?

5

我对WPF还不熟悉,希望我的问题表述得正确。我的目标是将<Image>绑定到在线图片。但是,我想要绑定的图片会根据应用程序的状态而变化。例如,如果我想要绑定到从列表中选择的员工,则会从我的App.config中检索基本URL,并使用员工的ID附加图片名称,如下所示:

var baseUrl = ConfigurationSettings.AppSettings["BaseImageUrl"];
var imageUrl = String.Format("{0}/{1}.jpg", baseUrl, employeeID);

问题是,我不确定如何在WPF中以声明方式完成这个操作。非常感谢您的帮助!

2个回答

3

你的代码中是否有一个员工对象?如果有,你可以暴露一个基于该对象的员工ID构建的URI属性。

否则,你可以在你的网站上拥有一个ASP.NET页面来提供图像(我不知道这是否可行,但这是一个想法)。

因此,在你的XAML中可以有这样的内容。

<Image Source="{Binding Path=EmployeeId, StringFormat='http://my.url.com/Image.aspx?employeeId={0}'}" />

Image.aspx会根据employeeId获取变量来流式传输图像?

我说过这可能有些问题,但它可能有用。我认为employee类上的URI属性是最清洁的选项。


0
我认为这样做会有所帮助:
<Window.Resources>
   <ImageSource x:Key="MyImage" Source="C:\Images\Default.jpg" />
</..>

<Image Source="{DynamicResource MyImage}" />

然后在你的代码后台:

((ImageSource)this.Resources["MyImage"]).Source = "C:\Path\From\Config.jpg";

那个文件系统路径能否替换成URL?我认为这才是原始问题所要求的(而且我很好奇)。 - Drew Noakes
谢谢您的回复。非常好的建议。但是,我希望有一种声明性的方法来实现这一点(而不必进入代码后台)。我期望的太多了吗? :) - Kevin Babcock
此外,我建议避免使用动态资源。 - kevindaub
@daub815 为什么你要远离动态资源? - John Kraft
它使用更多的资源,因此您应该仅在绝对需要时使用它。 - kevindaub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接