C# 如何处理空Uri';用于绑定到图像源的路径

C# 如何处理空Uri';用于绑定到图像源的路径,c#,wpf,mvvm,C#,Wpf,Mvvm,如何在空状态下初始化Uri对象 第一个想法是这样做 //does not work Uri myUri = Uri.Empty Uri uri = null; bool someValue = Context.TryGetUri(entity, out uri); 这个也不行 Uri myUri = new Uri(string.Empty) 原因是我将图像路径存储在数据库中,如果没有定义图像,我有一个空白的数据库记录 我知道有一些方法可以通过转换器处理这个问题,并在图像路径为空的情况下返

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

第一个想法是这样做

//does not work
Uri myUri = Uri.Empty
Uri uri = null;
bool someValue = Context.TryGetUri(entity, out uri);
这个也不行

Uri myUri = new Uri(string.Empty)
原因是我将图像路径存储在数据库中,如果没有定义图像,我有一个空白的数据库记录

我知道有一些方法可以通过转换器处理这个问题,并在图像路径为空的情况下返回默认的空白图像Uri

如何最好地处理与ViewModelURI属性的绑定


如果您想要返回许多不同的默认图像,那么转换器是如何处理的呢?

另一种处理方法是您可以更改数据查询,例如,如果您使用的是来自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


希望它适合你。

你可以这样做

//does not work
Uri myUri = Uri.Empty
Uri uri = null;
bool someValue = Context.TryGetUri(entity, out uri);

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

在代码中,不使用(伪代码):

if(myUri!=Uri.Empty)
{
//做点什么
}
您将有:

if(myUri!=null)
{
//做点什么
}
在这种情况下,如果适合您的工作流程,您也可以使用。

只需设置:

new Uri("about:blank");

对我来说很有用。

令人惊讶的是,结果非常好: