要在 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'}"/>