如何将文本块可见性绑定到另一个文本块文本 属性
How to bind a textblock visibility to another textblock text property
<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="   "
FontSize="{StaticResource TextStyleMediumFontSize}"
RequestedTheme="Light"
Style="{StaticResource TitleTextBlockStyle}"
TextWrapping="NoWrap" />
大家好,我有一个文本块,上面有一行用于指示旧价格。另一个文本块用于下一个文本之间的间距。但是,当没有折扣所以没有 oldPrice 值时,我将 oldPrice 文本设置为空。
所以我也想隐藏那个间距文本块。是否有任何可能的 xaml 方法将最后一个 TextBlock 的可见性 属性 绑定到 oldPrice 的文本。因此,如果 oldPrice 文本为 null 或空字符串,它将不可见。
谢谢
使用转换器你可以实现这个
在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
}
如果您直接将可见性绑定到文本意味着,它将始终显示类似于 Visible/Hidden 的文本。
<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="   "
FontSize="{StaticResource TextStyleMediumFontSize}"
RequestedTheme="Light"
Style="{StaticResource TitleTextBlockStyle}"
TextWrapping="NoWrap" />
大家好,我有一个文本块,上面有一行用于指示旧价格。另一个文本块用于下一个文本之间的间距。但是,当没有折扣所以没有 oldPrice 值时,我将 oldPrice 文本设置为空。
所以我也想隐藏那个间距文本块。是否有任何可能的 xaml 方法将最后一个 TextBlock 的可见性 属性 绑定到 oldPrice 的文本。因此,如果 oldPrice 文本为 null 或空字符串,它将不可见。
谢谢
使用转换器你可以实现这个
在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
}
如果您直接将可见性绑定到文本意味着,它将始终显示类似于 Visible/Hidden 的文本。