【问题标题】:How to bind to an Image using a dynamic URL in WPF?如何在 WPF 中使用动态 URL 绑定到图像?
【发布时间】:2009-02-24 08:49:48
【问题描述】:

我是 WPF 的新手,所以希望我正确地表达了这个问题。我想做的是将我的<Image> 绑定到在线图像。但是,我想绑定到的图像会根据应用程序的状态而变化。例如,如果我想绑定到从列表中选择的员工,我会从我的 App.config 中检索一个基本 URL,并使用员工的 ID 附加图像名称,如下所示:

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

问题是,我不确定如何在 WPF 中以声明方式执行此操作。非常感谢任何帮助!

【问题讨论】:

    标签: wpf image data-binding


    【解决方案1】:

    您的代码中有员工对象吗?如果是这样,您可以公开一个基于对象的员工 ID 构建的 URI 属性。

    否则,您能否在您的网站上有一个提供图像的 asp.net 页面(我不知道这是否可行,但这是一个想法)

    所以在你的 xaml 中有这样的东西

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

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

    正如我所说,这可能有点问题,但它可以工作,但我认为员工类上的 URI 属性将是最干净的选择。

    【讨论】:

      【解决方案2】:

      我认为这样的事情会有所帮助:

      <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 吗?我认为这就是最初的问题所要求的(我很好奇)。
      • 感谢您的回复。很好的建议。但是,我希望可能有一种方法可以以声明方式执行此操作(无需进入代码隐藏)。我希望太多了吗? :)
      • 另外,我会远离动态资源。
      • @daub815 为什么要远离动态资源?
      • 它会占用更多资源,所以你应该只在绝对需要时才使用它。
      猜你喜欢
      • 2011-08-03
      • 1970-01-01
      • 2011-01-25
      • 2015-01-10
      • 1970-01-01
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多