Я пытаюсь сделать проверку для 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
для каждого 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
должно BindingExpression
true или false в зависимости от проверки ошибок. Но для моего PasswordBox
никогда не получается значение... Есть идеи?