PasswordBox
の検証を試みています。妥当性確認を行うために、私はに続き、TextBox
の検証方法を示しています。PasswordBoxを検証する方法
問題はPasswordBoxes
で発生します。 Password
はセキュリティ上の理由でバインドできないため、this link(CodeProjectユーザーの場合はhereと記載されています)の後にバインディングを作成しようとしました。
だから、明らかに、素晴らしい! 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
を取得します。TextBox
:
BindingExpression beUserName = textBoxUserName.GetBindingExpression(TextBox.TextProperty);
if (beUserName != null) beUserName.UpdateSource();
そして、これは私がPasswordBox
のためにそれを取得する方法である:
BindingExpression bePassword = textBoxUserPass.GetBindingExpression(PasswordBoxAssistant.BoundPassword);
if (bePassword != null) bePassword.UpdateSource();
私たちはどんなミスをした場合は(私のバリデーションクラスで定義された)、私が行うとき、これは:
if (!beUserName.HasError && !bePassword.HasError)
各BindingExpression
を言う必要があります真の偽エラーのバリデーションによって異なります。しかし、私のためにPasswordBox
は決して価値を得ることはできません...任意のアイデア?
あなたは '設定しようとしたことがありあなたのバインディングでValidatesOnDataErrors = True'と 'ValidatesOnExceptions = True'ですか? –
'PasswordBox'には存在しません... – Sonhja
' BoundPassword'添付プロパティの場合は 'local:PasswordBoxAssistant.BoundPassword =" {Binding Path = Password、UpdateSourceTrigger = Explicit、ValidatesOnDataErrors = True、ValidatesOnExceptions = True} " –