【发布时间】:2016-12-01 06:39:33
【问题描述】:
我实现了以下转换器和代码,目的是创建某种水印。此代码适用于TextBlock + TextBox,但不适用于TextBlock + PasswordBox。你知道为什么这个转换器不工作吗?
XAML
<Helpers:HintConverter x:Key="hint" />
<TextBlock Height="30" Text=" password" Foreground="LightGray" Margin="274,264,278,306" Width="248">
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource hint}">
<Binding ElementName="txtPassword" Path="Text.IsEmpty" />
<Binding ElementName="txtPassword" Path="IsFocused" />
</MultiBinding>
</TextBlock.Visibility>
</TextBlock>
<PasswordBox PasswordChanged="PasswordBox_PasswordChanged" Name="txtPassword" BorderThickness="2" Height="30" Margin="273,264,275,306" Background="Transparent">
<PasswordBox.BorderBrush>
<LinearGradientBrush EndPoint="1,1" StartPoint="1,0">
<GradientStop Color="White" Offset="0" />
<GradientStop Color="White" Offset="0.75" />
<GradientStop Color="Green" Offset="0.75" />
<GradientStop Color="#FF0D9ECD" Offset="1" />
</LinearGradientBrush>
</PasswordBox.BorderBrush>
</PasswordBox>
转换器
public class HintConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is bool && values[1] is bool)
{
bool hasText = !(bool)values[0];
bool hasFocus = (bool)values[1];
if (hasFocus || hasText)
return Visibility.Collapsed;
}
return Visibility.Visible;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
【问题讨论】:
-
尝试删除
Background="Transparent" -
@Venky 不起作用:/
标签: c# wpf mvvm converter watermark