如何将一个文本块的可见性绑定到另一个文本块的文本属性?

3
<Grid
    Height="{Binding ElementName=oldPrice, Path=Height}">
  <TextBlock
      VerticalAlignment="Bottom"
      FontSize="{StaticResource TextStyleSmallFontSize}"
      RequestedTheme="Light"
      FontWeight="Bold"
      Foreground="#B0B0B0"
      Style="{StaticResource TitleTextBlockStyle}"
      TextWrapping="NoWrap">
    <Run
      x:Name="oldPrice"
      Text="{Binding oldPrice}" />
  </TextBlock>
  <Line
      Stretch="Fill"
      Stroke="#B0B0B0"
      StrokeThickness="1"
      X1="1"
      Width="{Binding ElementName=oldPrice, Path=Width}"
      Height="{Binding ElementName=oldPrice, Path=Height}"
      Margin="0,6,0,0" />
</Grid>
<TextBlock
    Text="&#160;&#160;&#160;"
    FontSize="{StaticResource TextStyleMediumFontSize}"
    RequestedTheme="Light"
    Style="{StaticResource TitleTextBlockStyle}"
    TextWrapping="NoWrap" />

大家好,我有一个文本块和一条线用于显示旧价格,还有另一个文本块用于在下一段文本之间留出空格。然而,如果没有折扣,也就是没有旧价格的值,我将旧价格文本设置为null。

所以我想要隐藏那个空格文本块。是否有可能使用XAML方式将最后一个文本块的可见性属性绑定到旧价格的文本上。因此,如果旧价格文本为空或为null,则该文本块将不可见。

谢谢

1个回答

4
使用转换器你可以实现这个功能。
在XAML中。
 <TextBlock x:Name="TB" Text="Text"/>
 <TextBox Visibility="{Binding ElementName=TB,Path=Text,Converter={StaticResource StringToVisibilityConverter}}"/>

对应的C#代码转换器是

 public class StringToVisibilityConverter: IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return string.IsNullOrEmpty((string)value)?Visibility.Collapsed:Visibility.Visible;

    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return (Visibility)value == Visibility.Visible;
    }

    #endregion
}

如果您直接将可见性绑定到文本,意味着它将始终显示文本,类似于“可见/隐藏”。


在XAML中添加了<local:StringToVisibilityConverter x:Key="StringToVisibilityConverter" />以使其被识别,并且它起作用了。谢谢。 - garenyondem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接