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

时间:2015-06-12 10:57:45

标签: c# xaml windows-phone-8 windows-phone-8.1 winrt-xaml

<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" />

大家好,我有一个文本块,上面有一行用于oldPrice指示。另一个文本块用于下一个文本之间的间距。但是当没有dicount时所以没有oldPrice值我将oldPrice文本设置为null。

所以我想隐藏那个间距文本块。是否有任何可能的xaml方法将最后一个TextBlock的visibility属性绑定到oldPrice的文本。因此,如果oldPrice文本为null或空字符串,它将不可见。

由于

1 个答案:

答案 0 :(得分:3)

使用转换器您可以实现此目的

在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
}

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