Мой первый пост здесь, надеюсь, кто-нибудь может помочь.Я довольно новичок в C # и Silverlight, поэтому, пожалуйста, будьте осторожны.
Вот моя текущая проблема / проблема.
У меня есть MainPage.xaml, который имеет элемент управления Grid для отображения страниц.Когда мой сайт загружается, я хотел бы показать страницу UserControl для входа или регистрации.
Я создал страницу UserControl, давайте назовем ее ctrlLogon.xaml.ctrlLogon содержит фрейм, который будет содержать страницу входа или регистрации.Я использую фрейм, потому что я использую пользовательский переход между страницей входа и регистрации.
Вход в систему происходит в LoginPage.xaml, который использует службы wcf для связи с базой данных.Это нормально, но мне нужен обработчик событий для уведомления ctrlLogon, если пользователь успешно вошел в систему или не может войти в систему.
В ctrlLogon.xaml.cs:
public partial class ctrlLogon : UserControl
{
pgLogonPage newLogonPage;
public ctrlLogon()
{
InitializeComponent();
newLogonPage = new pgLogonPage();
newLogonPage.LoggedInOK += new EventHandler(newLogonPage_LoggedInOK);
newLogonPage.LoginFailed += new EventHandler(newLogonPage_LoginFailed);
}
void newLogonPage_LoggedInOK(object sender, EventArgs e)
{
//throw new NotImplementedException();
}
void newLogonPage_LoginFailed(object sender, EventArgs e)
{
//throw new NotImplementedException();
}
Затем либо черезщелчок по кнопке или любое другое означающее, что я использую:
ContentFrame.Navigate (новый Uri ("/ Views / pgLogonPage.xaml"), UriKind.Relative);
Это прекрасно работает, перейдя к pgLogonPage.
Моя проблема заключается в том, что я создаю и экземпляр pgLogonPage для настройки обработчика событий, но Navigate также создает экземпляр pgLogonPage, поэтому следующее не работает:
public partial class pgLogonPage : Page
{
ServiceClient smsClient;
public pgLogonPage()
{
InitializeComponent();
Client = new ServiceClient();
Client.LoginCompleted += new EventHandler<LoginCompletedEventArgs (Client_LoginCompleted);
}
public event EventHandler LoggedInOK;
public void OnLoggedInOK()
{
if (LoggedInOK != null)
LoggedInOK(this, new EventArgs());
}
public event EventHandler LoginFailed;
public void OnLoginFailed()
{
if (LoginFailed != null)
LoginFailed(this, new EventArgs());
}
void Client_LoginCompleted(object sender, LoginCompletedEventArgs e)
{
if (e.Result.Contains("Success"))
{
OnLoggedInOK();
}
else
{
OnLoginFailed();
}
}
}
Обработчики событий LoggedInOK и LoginFailed всегда равны нулю.Я думаю, это потому, что создаются два экземпляра pgLogonPage.Я могу ошибаться, поэтому, пожалуйста, любая помощь, чтобы получить эту работу приветствуется.Если что-то не ясно, пожалуйста, дайте мне знать.
С уважением
Нил