将 WPF 中的图像源绑定到 URL

2024-01-04

我一直在浏览不同的帖子,试图找出我的问题出了什么问题。基本上我的用户控件上有一个 Image 标签,以及我想绑定到 url 的 Source。然而这不起作用。我尝试过使用返回的 ValueConverterBitmapImage(new Uri((string)value));但这不起作用。我唯一能得到的是你不能绑定到一个网址,你必须下载你想要绑定的图像。我不想下载我搜索的所有图像。是否有解决方法可以完成此任务,而无需在本地下载图像。我认为 ValueConverter 方法返回 BitmapImage 是最好的。请帮忙?

public class MyViewModel
{
    private string _posterUrl;
        public string PosterUrl
        {
            get
            {
                //Get Image Url, this is an example and will be retrieved from somewhere else.
                _posterUrl = "http://www.eurobuzz.org/wp-content/uploads/2012/08/logo.jpg";
                return _posterUrl;    
            }
            set 
            { 
                _posterUrl = value;
                NofityPropertyChanged(p => p.PosterUrl);
            }
        }
}

这是我的值转换器:

public class BitmapImageConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if(value is string)
            return new BitmapImage(new Uri((string)value, UriKind.RelativeOrAbsolute));

        if(value is Uri)
            return new BitmapImage((Uri)value);

        throw new NotSupportedException();
    }

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

这是我的 XAML:

<Image Source="{Binding PosterUrl, Converter={StaticResource bitmapImageConverter}}" Width="100" Height="100" />

因此,它绑定到包含 imageurl 的 PosterUrl 属性,并将其转换为位图图像。有任何想法吗?


Try it

<Image Helpers:ImageAsyncHelper.SourceUri="{Binding Url, IsAsync=True}" x:Name="img" />

Where

using System;
using System.Windows;
using System.Windows.Data;
using System.Windows.Controls;

public class ImageAsyncHelper : DependencyObject {
    public static Uri GetSourceUri(DependencyObject obj){
        return (Uri)obj.GetValue(SourceUriProperty);
    }

    public static void SetSourceUri(DependencyObject obj, Uri value){
        obj.SetValue(SourceUriProperty, value);
    }

    public static readonly DependencyProperty SourceUriProperty =
        DependencyProperty.RegisterAttached("SourceUri",
            typeof(Uri),
            typeof(ImageAsyncHelper),
            new PropertyMetadata { PropertyChangedCallback = (obj, e) =>
                ((Image)obj).SetBinding(
                    Image.SourceProperty,
                    new Binding("VerifiedUri"){
                        Source = new ImageAsyncHelper{
                            _givenUri = (Uri)e.NewValue
                        },
                        IsAsync = true
                    }
                )
            }
        );

    private Uri _givenUri;
    public Uri VerifiedUri {
        get {
            try {
                System.Net.Dns.GetHostEntry(_givenUri.DnsSafeHost);
                return _givenUri;
            }
            catch (Exception) {
                return null;
            }
        }
    }
}

And

public Uri Url {
    get {
        return new Uri(SomeString, UriKind.Absolute);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 WPF 中的图像源绑定到 URL 的相关文章

  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • 在 C# 中解析 JS Date.toIsoString

    我需要将 JS 日期存储为 ISO 8601 日期 我目前正在从格式为 2019 06 22T00 00 00 000Z 的表单中获取日期 正如 JS 的 toIsoString 方法所期望的那样 当这个日期传递到我的 API 控制器时 我
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 使用 STL 流时如何格式化我自己的对象?

    我想将我自己的对象输出到 STL 流 但具有自定义格式 我想出了这样的东西 但由于我之前从未使用过 locale 和 imbue 所以我不知道这是否有意义以及如何实现 MyFacet 和operator 所以我的问题是 这是否有意义以及如何
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 更改私有模块片段是否会导致模块重新编译?

    On 此页面有关 C 20 模块功能 https www modernescpp com index php c 20 modules private module fragment and header units 我发现了这样的说法 借
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • main.cpp 是必需的吗?

    我试图编译一个程序cmake 我最终删除了我的main cpp文件 我刚刚将其复合到另一个包含我的项目名称的文件中 即 我刚刚将主函数剪切并粘贴到该文件中 问题是我有一个main cpp未发现错误 不确定是否在C 一个名为main cpp是
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 使用通用存储库模式和流畅的 nHibernate

    我目前正在开发一个中型应用程序 它将访问不同站点上的 2 个或更多 SQL 数据库等 我正在考虑使用类似的东西 http mikehadlow blogspot com 2008 03 using irepository pattern w
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • 如何在谷歌地图多边形内绘制直线

    我使用创建了谷歌地图google map javascript API V3 我正在绘制邮政编码多边形的数量 根据某些条件 多边形具有不同的颜色 现在我想根据某些标准在某些多边形内绘制直线 散列标记 我们怎样才能做到呢 下面是我为绘制多边形
  • PyDev 无法在 Eclipse 中工作

    我最近不得不重置我的 PC 重新启动 Eclipse 后出现此错误 id org python pydev editor PythonEditor 没有编辑器描述符 我尝试寻找解决方案 但其他人喜欢here https stackoverf
  • 创建新的 Google 日历

    我想使用 Android 应用程序在现有帐户上创建新的 Google 日历 例如this http sourceforge net projects lngooglecalsync Windows 应用程序确实如此 该应用程序使用 Gdat
  • 如何更改 :focus 上文本区域的边框颜色

    我想改变焦点上 TEXTAREA 的边框颜色 但我的代码似乎无法正常工作 代码已开启fiddle http fiddle jshell net ffS4S
  • PHP cURL、POST JSON

    我需要发布以下 JSON 代码 但由于某种原因它不起作用 下面是我的代码 fieldString 395609399 the curl request processor function processCurlJsonrequest UR
  • 在并行任务期间跟踪失效的 WebDriver 实例

    我看到一些使用 Selenium WebDriver 运行并行嵌套循环 Web 压力测试的死实例怪异现象 简单的例子是 比如说 点击 300 个独特的页面 每个页面有 100 次展示 我 成功 获得 4 8 个 WebDriver 实例Th
  • 如何在 YouTube 缩略图上叠加播放按钮

    在我正在进行的一个项目中 我们将媒体团队发布的大量 YouTube 视频提取到数据库中 以便我们可以将它们呈现为相关内容 我们希望能够在生成的 YouTube 缩略图上叠加一个播放按钮 以便更明显地表明缩略图代表的是可以播放的视频 我正在寻
  • 有没有办法在Linux平台上编译微软风格的内联汇编代码?

    正如标题中提到的 我想知道有没有办法在 Linux 操作系统 例如 ubuntu 中编译微软风格的内联汇编代码 如下所示 asm mov edi A EMMS 示例代码是内联汇编代码的一部分 可以在win10上使用cl exe编译器成功编译
  • 如何在 Android 中将提示文本置于 EditText 中?

    我需要将提示文本居中EditText在安卓中 我该怎么做呢 为了使提示文本居中以与 EditText 一起使用 您必须确保定义 android ellipsize start 我不知道为什么这会起作用 但确实如此 从个人代码中提取的示例
  • SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式)

    我有 3 个表 t1 t2 t3 我想要一个基于以下条件的结果集 t1 在 t2 t1 的所有行 上有外连接 t1 在 t3 t1 的所有行 上有外连接 t2 在 t3 t2 的所有行 上有外连接 如何在单个查询中使用这些外部 3 个联接
  • 如何按顺时针/逆时针方向对所有多边形点进行排序?

    我一直在阅读贾维斯的算法 虽然它能够按顺时针方向对所有 外部点 进行排序 但内部点将被忽略 如下所示 有谁知道我是否必须实现任何其他算法或任何其他方法来按顺时针方向对每个点进行排序 谢谢 第一步格雷厄姆扫描 https en wikiped
  • 如何允许用户在 Web 应用程序中编辑附件?

    我们使用 ASP NET 创建了一个 Web 应用程序 允许用户上传文档并将其附加到业务实体 如客户 联系人等 该应用程序在内联网上运行 所有文件都通过 Web 应用程序上传到服务器上的共享文件夹中 我希望用户可以直接从网页上open实际文
  • 并行运行 junit 测试时的竞争条件

    我想知道如果我并行运行测试并且两个测试 如下 共享一个实例变量 是否会有一些竞争条件 所以我的测试类使用 SpringJunit4ClassRunner 运行 并且我有 2 个测试方法 a 和 b 变量state将从每个测试中修改或重新分配
  • 如何使用 ”!”作为注释指示符,还可以在语言语法高亮中使用 NOT 运算符吗?

    我正在使用 VScode 并创建自己的语言扩展来突出显示语法 其中我需要使用正则表达式来查找注释 基本规则是之后的一切 是一个注释 但是有一个特殊情况 什么时候 在里面eval 命令 它的意思是NOT 例如 我的一些代码如下所示 if co
  • PySpark DataFrame 列参考:df.col 与 df['col'] 与 F.col('col')?

    我有一个概念希望你能帮忙澄清 以下三种引用 PySpark 数据框中列的方式有什么区别 我知道不同的情况需要不同的形式 但不知道为什么 df col e g F count df col df col e g df col 0 F col
  • C# 语法中的问号[重复]

    这个问题在这里已经有答案了 可能的重复 使用条件 三元 运算符的好处 https stackoverflow com questions 3312786 benefits of using the conditional ternary o
  • numpy 矩阵代数最佳实践

    我的问题是关于下面最后一行 mu sigma mu 为什么它有效 一维 ndarray 被视为行向量还是列向量 不管怎样 不应该是这样吗mu T sigma mu or mu email protected cdn cgi l email
  • 使用requirejs优化和加载外部依赖

    我有一个需要 Facebook SDK 的模块 我想知道应该如何配置 SDK 的加载 以便 RequireJS 优化器正确处理它 In app require config paths facebook connect facebook n
  • 在每个url末尾添加斜杠(需要重写nginx规则)

    我尝试得到一个 到每个网址结尾 example com art should example com art I use nginx作为网络服务器 我需要为此重写规则 为了更好地理解 请检查以下内容 http 3much schnicksc
  • 将 WPF 中的图像源绑定到 URL

    我一直在浏览不同的帖子 试图找出我的问题出了什么问题 基本上我的用户控件上有一个 Image 标签 以及我想绑定到 url 的 Source 然而这不起作用 我尝试过使用返回的 ValueConverterBitmapImage new U