我有一个Textblock哪个Text属性绑定到DateTime?类型数据,而我想在DateTime时显示一些内容?数据为空。

下面的代码效果很好。

  < TextBlock Text="{Binding DueDate, TargetNullValue='wow,It's null'}"/>


但是,如果我想将Localizedstring绑定到TargetNullValue怎么办?
下面的代码不起作用:(如何?

  < TextBlock Text="{Binding DueDate, TargetNullValue={Binding LocalStrings.bt_help_Title1, Source={StaticResource LocalizedResources}} }"/>

最佳答案

我看不到使用TargetNullValue做到这一点的任何方法。解决方法是,您可以尝试使用转换器:

public class NullValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null)
        {
            return value;
        }

        var resourceName = (string)parameter;

        return AppResources.ResourceManager.GetString(resourceName);
    }

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


然后将其添加到页面的资源中:

<phone:PhoneApplicationPage.Resources>
    <local:NullValueConverter x:Key="NullValueConverter" />
</phone:PhoneApplicationPage.Resources>


最后,使用它代替TargetNullValue:

<TextBlock Text="{Binding DueDate, Converter={StaticResource NullValueConverter}, ConverterParameter=bt_help_Title1}" />

07-27 13:36