1

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

我有文本块

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

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

现在,如果我在该行中获得 Null,我想将文本框的可见性设置为折叠我该怎么做

4

2 回答 2

3

要在 Binding 值为 null 时更改 TextBlock 的可见性,您需要使用将 null/not null 转换为 Visible/Collapsed 的转换器。

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

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'}"/>
于 2013-07-16T06:58:22.877 回答
1

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

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();
  }

}

然后,您使用转换器绑定 的VisibilityTextBlock

<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>
于 2013-07-16T07:00:03.930 回答