我试图将标签的可见性绑定到PasswordBox控件的类型长度。我将标签的Visibility属性绑定到目标为passwordbox的SecurePassword.Length属性的转换器的输出。
绑定工作正常,但只有一次,当应用程序首次启动时。它并不保持同步。如果我使用足够长的值来播种密码(如我的示例所示),则会显示该消息,但在我键入或删除文本时它不会更新。显然,我错过了一些东西。
我使用this问题作为我的实施模板。
我的Xaml:
<PasswordBox Name="PwdPassword" HorizontalAlignment="Left" MinWidth="120"
Password="abcdefghijklmnopqrstuvwxyz1234567890"></PasswordBox>
<Label Name="LblPasswordMsg" Content="Message" FontWeight="Bold">
<Label.Style>
<Style TargetType="{x:Type Label}">
<Setter Property="Visibility" Value="{Binding UpdateSourceTrigger=PropertyChanged, ElementName=PwdPassword, Mode=OneWay,
Path=SecurePassword.Length, Converter={StaticResource IntLengthVisibilityConverter}}" />
</Style>
</Label.Style>
</Label>
我的转换器:
[ValueConversion(typeof(int), typeof(Visibility))]
public class IntLengthVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// Do the conversion from int to visibility
int length = (int)value;
Visibility visible = length >= 25 ? Visibility.Visible : Visibility.Hidden;
return visible;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// Do the conversion from visibility to int
return null;
}
}
答案 0 :(得分:1)
我认为问题是SecurePassword.Length不是依赖属性,因此当其值发生变化时不会发生自动通知。