|
namespace RIADataServicesDemoApp.LoginUI
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Ria;
using System.Windows.Ria.ApplicationServices;
using RIADataServicesDemoApp.Resources;
public partial class LoginRegistrationWindow : ChildWindow
{
private IList<OperationBase> possiblyPendingOperations = new List<OperationBase>();
public LoginRegistrationWindow()
{
InitializeComponent();
this.registrationForm.SetParentWindow(this);
this.loginForm.SetParentWindow(this);
this.LayoutUpdated += this.GoToInitialState;
this.LayoutUpdated += this.UpdateTitle;
}
/// <summary>
/// Initializes the <see cref="VisualStateManager"/> for this component
/// by putting it into the "AtLogin" state
/// </summary>
private void GoToInitialState(object sender, EventArgs eventArgs)
{
VisualStateManager.GoToState(this, "AtLogin", false);
this.LayoutUpdated -= this.GoToInitialState;
}
/// <summary>
/// Updates the window title according to which panel
/// (registration / login) is currently being displayed
/// </summary>
private void UpdateTitle(object sender, EventArgs eventArgs)
{
this.Title = (this.registrationForm.Visibility == Visibility.Visible) ?
ApplicationStrings.RegistrationWindowTitle :
ApplicationStrings.LoginWindowTitle;
}
/// <summary>
/// Notifies the <see cref="LoginRegistrationWindow"/> window that it can only close
/// if <paramref name="operation"/> is finished or can be cancelled
/// </summary>
/// <param name="operation">The pending operation to monitor</param>
public void AddPendingOperation(OperationBase operation)
{
this.possiblyPendingOperations.Add(operation);
}
public virtual void NavigateToLogin()
{
VisualStateManager.GoToState(this, "AtLogin", true);
}
public virtual void NavigateToRegistration()
{
VisualStateManager.GoToState(this, "AtRegistration", true);
}
/// <summary>
/// Prevents the window from closing while there are operations in progress
/// </summary>
private void LoginWindow_Closing(object sender, CancelEventArgs eventArgs)
{
foreach (OperationBase operation in this.possiblyPendingOperations)
{
if (!operation.IsComplete)
{
if (operation.CanCancel)
{
operation.Cancel();
}
else
{
eventArgs.Cancel = true;
}
}
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog