Wpf 如何检查转换器中的空值

Wpf 如何检查转换器中的空值,wpf,vb.net,data-binding,ivalueconverter,Wpf,Vb.net,Data Binding,Ivalueconverter,我使用SQLDataReader从数据库中获取数据,并在代码中实例化相应的对象。我按如下方式处理可能包含null的所有字段(只是一个代码段示例): 我使用此转换器正确显示数据(再次使用DateTime字段作为示例): 除了缺少DateTime字段的情况外,这可以正常工作。在这种情况下,我需要检查“value”参数,但我尝试过的测试都不起作用。我使用了IsNothing和IsDBNull.Value.Equals,并将“Value”转换为字符串,然后将其与string.Empty进行比较。它们都返

我使用SQLDataReader从数据库中获取数据,并在代码中实例化相应的对象。我按如下方式处理可能包含null的所有字段(只是一个代码段示例):

我使用此转换器正确显示数据(再次使用DateTime字段作为示例):

除了缺少DateTime字段的情况外,这可以正常工作。在这种情况下,我需要检查“value”参数,但我尝试过的测试都不起作用。我使用了IsNothing和IsDBNull.Value.Equals,并将“Value”转换为字符串,然后将其与string.Empty进行比较。它们都返回false,即使对于没有数据的字段(在我的数据库中为Null)

是否有办法检查“value”参数中是否缺少数据

ETA:以下是我调用转换器的方式:

<Window.Resources>
    <local:DateConverter x:Key="DateConverter">

    </local:DateConverter>
.....
Binding="{Binding Path=ChargeDate, Converter={StaticResource DateConverter}}" />

.....
Binding=“{Binding Path=ChargeDate,Converter={StaticResource DateConverter}}”/>

首先将值类型StartDate设置为Nothing,将其设置为默认值。在本例中,StartDate是DateTime,默认值是DateTime.MinValue。不过,对于实现所需的条件检查,您有一些备选方案

第一,您可以使用=代替Is:

If value = Nothing Then

End If
您也可以检查DateTime.MinValue,但如果您这样做,我建议您利用targetType参数,因为您似乎试图使转换函数本质上是泛型的:

If (targetType = GetType(DateTime) AndAlso value = DateTime.MinValue) Then

End If
或者StartDate可以是一个可为空的日期时间,这将使您无法使用:

Dim StartDate as DateTime? = If(IsDBNull(rdr(6)), Nothing, rdr.GetDateTime(6))
最后答覆: 我只是将“value”转换成一个日期,并将其与任何合理输入之前的任意日期进行比较,比如1800。如果输入大于该值,我将其视为有效并退出:

Return CDate(value)

你如何调用这个转换方法?参数和targetType在方法中有什么用途?你的应用程序是Winforms还是WPF?
如果值为DBNull,则数据为null。@Chetan Ranpariya请参阅我的OP edit。@Protoix WPF对不起,我应该提到这一点。当Option Strict启用时,编译器拒绝使用=选项。使用正确的语法会给出错误的答案。我已经将默认值设置为Nothing,但仍然得到了错误的答案。我已经将StartDate设置为Nullable,但它仍然给出了错误的答案。最后,我已经认为唯一的解决办法是检查最小值,但我发布了这个问题,因为我认为我肯定是做错了什么。
Dim StartDate as DateTime? = If(IsDBNull(rdr(6)), Nothing, rdr.GetDateTime(6))
Return CDate(value)