wpf 如何使用MVVM模式或caliburn micro清除PasswordBox值

lnlaulya  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(104)

我应该如何在错误输入时清除密码框值?我看到过一些答案,比如“将密码框发送到视图模型”,但这只是打破了MVVM模式。
当前xaml

<PasswordBox x:Name="PasswordInput" Style="{DynamicResource PWbox}" cal:Message.Attach="[Event PasswordChanged] = [Action PasswordChanged($source)]" Grid.Row="3" Grid.Column="2"/>

字符串
viewmodel

public void PasswordChanged(PasswordBox source)
        {
            OldPassword = source.Password;
        }

private string _oldPassword;
        public string OldPassword
        {
            get { return _oldPassword; }
            set
            {

                _oldPassword = value;
                NotifyOfPropertyChange(() => OldPassword);
            }
        }
gjmwrych

gjmwrych1#

我发现您可以通过切换绑定的IsEnabled值来欺骗它,并使用

private void PasswordBox_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        if (sender is PasswordBox passwordBox 
            && e.NewValue is bool newValue
            && !newValue)
        {
            passwordBox.Clear();
        }
    }

字符串

相关问题