在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如何进行
若要在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();
}
}
然后使用转换器绑定TextBlock
的Visibility
<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>