在Windows手机中将数据绑定到文本块时,我们如何处理Null值

本文关键字:何处理 我们 处理 Null 手机 Windows 数据绑定 文本 | 更新日期: 2023-09-27 18:22:35

听说我在Windows手机中将数据绑定到文本块时感到困惑

我有文本块

<TextBlock Name="strytxt"
           Text="{Binding STORY}" 
            Height="auto" 
            Width="Auto" 
            TextWrapping="Wrap"/>

在STORY对象中,有时我有空/空值当时我在UI 中获得了一些空间

现在,如果我在该行中为Null,我想使中的文本框的可见性为Collapsed如何进行

在Windows手机中将数据绑定到文本块时,我们如何处理Null值

若要在Binding值为null时更改TextBlock的Visibility,您需要使用一个从null/not null转换为Visible/Collapsed的转换器。

这是一个转换值的转换器。转换器将空字符串处理为null,以便为string.empty返回Collapsed。:

public class NullToVisibilityConverter : IValueConverter {
  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
    bool isVisible = value == null ? false : true;
    if (isVisible) {
      string stringValue = value as string;
      if (stringValue != null) {
        isVisible = string.IsNullOrEmpty(stringValue) ? false : true;
      }
    }
    if (System.ComponentModel.DesignerProperties.IsInDesignTool) {
      return Visibility.Visible;
    }
    return isVisible ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
  }
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
    }

您可以将转换器应用于TextBlock,如下所示:

<UserControl.Resources>
  <local:NullToVisibilityConverter x:Key="NullToVisibilityConverter"/>
</userControl.Resources>
<TextBlock Name="strytxt"
           Visibility="{Binding STORY, Converter={StaticResource nullToVisibilityConverter}}"/>

另一种选择是在值为null时显示Text,您可以在绑定中指定

<TextBlock Name="strytxt"
           Text="{Binding STORY, TargetNullValue='is Null'}"/>

您可以使用值转换器将值转换为可见性:

public class NullToVisibiltyConverter : IValueConverter {
  public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture) {
    return value == null ? Visibility.Collapsed : Visibility.Visible;
  }
  public Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture) {
    throw new NotImplementedException();
  }
}

然后使用转换器绑定TextBlockVisibility

<TextBlock Name="strytxt"
  Text="{Binding STORY}" 
  Height="auto" 
  Width="Auto" 
  TextWrapping="Wrap"
  Visibility="{Binding STORY, Converter={StaticResource NullToVisibilityConverter}}"/>

您需要将转换器的实例添加到资源字典中,以便能够在绑定中引用它:

<UserControl.Resources>
  <local:NullToVisibilityConverter x:Key="NullToVisibilityConverter"/>
</userControl.Resources>