如何处理路径绑定到图像源的空Uri

时间:2012-04-05 11:06:09

标签: c# wpf mvvm

如何在空状态下初始化Uri对象。

首先想到的是做这样的事情

//does not work
Uri myUri = Uri.Empty

这个也不起作用

Uri myUri = new Uri(string.Empty)

原因是我将图像路径存储在数据库中,如果没有定义图像,我有一个空白的数据库记录。

我知道有一些方法可以使用转换器处理此问题,并在image_path为空时返回默认的空白图像Uri ...

如何最好地处理与ViewModel Uri Property的绑定?

转换器是否可行?如果您想要返回许多不同的默认图像,您将如何处理它?<​​/ p>

4 个答案:

答案 0 :(得分:1)

你可以做这样的事情

Uri uri = null;
bool someValue = Context.TryGetUri(entity, out uri);

答案 1 :(得分:1)

只需设置:

new Uri("about:blank");

为我工作。

答案 2 :(得分:0)

处理此问题的其他方法是,您可以更改数据查询,例如,如果您使用的是sql employees表,那么您可以编写如下所示。

select Employeeid, FirstName, LastName, 
case when ImageUrl is null then 'http://www.codeodor.com/images/Empty_set.png' else ImageUrl end as ImageUrl from employees

这将处理null并返回空图像的默认URL;

希望它适合你。

答案 3 :(得分:0)

我有同样的问题,经过一段时间的思考,我认为System.Uri没有默认的构造函数,因为它没有意义。 实际上,URI标识了资源,因此如果资源不存在或无法定位,我认为最好的方法是处理null引用而不是空Uri

在您的代码中,而不是(伪代码):

if (myUri != Uri.Empty)
{
    // do something
}
你会得到:

if (myUri != null)
{
   // do something
}

在这种情况下,如果适合您的工作流程,您还可以使用Null-conditional Operator