Binding 値が null のときに TextBlock の Visibility を変更するには、null/not null から Visible/Collapsed に変換する Converter を使用する必要があります。
値を変換するコンバーターです。コンバーターは空の文字列を 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'}"/>