Я пишу приложение Silverlight 4, используя «Silverlight 4 Unleashed» в качестве основы.
У меня есть ChildWindow для входа в систему с именем пользователя, паролем и Запомнить меня.Кнопка «ОК» привязана к моему входу в AuthUserViewModel с использованием RelayCommand.
Поскольку я только начинаю, у меня еще нет никакой проверки данных, и я заметил что-то странное.
Если я нажму «ОК»"в моем дочернем окне входа в систему мой обратный вызов Action сообщает мне, что у меня есть недействительные учетные данные в MessageBox ... что идеально.Я использую свою собственную службу аутентификации по разным причинам.
Однако, если я снова нажму «ОК», моя служба будет вызываться один раз, но дважды вызывается обратный вызов Action, сообщая, что у меня неверные учетные данные.Если я снова нажму «ОК», служба будет вызываться один раз, но обратный вызов Action будет запущен три раза и т. Д. И т. Д.
Зачем это нужно делать?
Здесьэто код ошибки:
public void SignIn(AuthUserDataModel authUser, Action<ErrorContainer> callback)
{
EnsureClient();
client.SignInCompleted += (sender, result) =>
callback(new ErrorContainer
{
AsyncException = result.Error,
CustomError = result.Result.CustomMessage //holds "Invalid credentials"
});
client.SignInAsync(authUser);
}
Как я уже сказал, событие кнопки вызывается один раз, веб-служба вызывается один раз, а обратный вызов запускается на сумму, равную числу нажатий кнопки ОК.
Спасибо.