の検証を行おうとしていPasswordBox
ます。検証を行うために、このリンクをたどりました。これは、で検証する方法を示していますTextBox
。
問題は付属していPasswordBoxes
ます。Password
セキュリティ上の理由からバインドできないため、このリンクに従ってバインドを作成しようとしました ( CodeProject ユーザー向けにここでも説明されています)。
どうやら、素晴らしい!私PasswordBox
をそのPassword
プロパティにバインドできるので、検証にバインドできます。しかし、それは私を無視します...
これはTextBox
私が使用し、正常に動作する定期的なものです:
<local:ErrorProvider Grid.Column="1" Grid.Row="2" >
<TextBox Width="160"
HorizontalAlignment="Left"
Name="textBoxUserPass"
Text="{Binding Path=Password, UpdateSourceTrigger=Explicit}" />
</local:ErrorProvider>
そして、これはPasswordBox
私がシミュレートしようとしたものです:
<local:ErrorProvider Grid.Column="1" Grid.Row="2" >
<PasswordBox Width="160"
HorizontalAlignment="Left"
Name="textBoxUserPass"
local:PasswordBoxAssistant.BindPassword="True"
local:PasswordBoxAssistant.BoundPassword="{Binding Path=Password, UpdateSourceTrigger=Explicit}" />
</local:ErrorProvider>
これは私がBindingExpression
for eachを取得する方法ですTextBox
:
BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty);
if (beUserName != null) beUserName.UpdateSource();
そして、これは私がそれを取得する方法ですPasswordBox
:
BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();
間違いを犯した場合 (Validation クラスで定義)、これを行うと:
if (!beUserName.HasError && !bePassword.HasError)
エラー検証に応じて、それぞれが真または偽BindingExpression
となるはずです。しかし、私にとっては価値がありません...何か考えはありますか? PasswordBox