- MigrateToMvvmMef-Part3_Src.zip
- MigrateToMvvmMef-Part3_Src
- _Assemblies
- GalaSoft.MvvmLight.SL5.dll
- System.Windows.Interactivity.dll
- AnotherXap.Models
- AnotherXap.ViewModels
- AnotherXap.Views
- ProductApp.Common
- Bin
- Release
- Constants
- EventArguments
- Models
- ModuleServices
- obj
- ProductApp.Common.csproj
- ProductApp.Common.csproj.user
- Properties
- SaveState
- ProductApp.Main
- ProductApp.Models
- ProductApp.sln
- ProductApp.suo
- ProductApp.ViewModels
- ProductApp.Views
- ProductApp.Web
- ProductRiaLib.Web
- ProductRiaLib
- Readme.txt
- MigrateToMvvmMef-Part1_Src.zip
- MigrateToMvvmMef-Part1_Src
- ProductApp.Common
- ProductApp.Main
- ProductApp.sln
- ProductApp.suo
- ProductApp.Views
- ProductApp.Web
- ProductRiaLib.Web
- ProductRiaLib
- Readme.txt
- MigrateToMvvmMef-Part2_Src.zip
- MigrateToMvvmMef-Part2_Src
- _Assemblies
- GalaSoft.MvvmLight.SL5.dll
- System.Windows.Interactivity.dll
- ProductApp.Common
- Bin
- Release
- Constants
- EventArguments
- Models
- ModuleServices
- obj
- ProductApp.Common.csproj
- ProductApp.Common.csproj.user
- Properties
- ProductApp.Main
- ProductApp.Models
- ProductApp.sln
- ProductApp.suo
- ProductApp.ViewModels
- ProductApp.Views
- ProductApp.Web
- ProductRiaLib.Web
- ProductRiaLib
- Readme.txt
|
using System;
using System.Windows;
using System.Windows.Controls;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Messaging;
using ProductApp.Common;
namespace ProductApp.Main.Views
{
public partial class MainPage : UserControl
{
private ModuleCatalogService _catalogService = ModuleCatalogService.Instance;
public MainPage()
{
InitializeComponent();
// Register MVVMLight messages
Messenger.Default.Register(this, MessageToken.LoadScreenMessage, new Action<string>(OnLoadScreenMessage));
Messenger.Default.Register(this, MessageToken.RaiseErrorMessage, new Action<Exception>(OnRaiseErrorMessage));
Messenger.Default.Register(this, MessageToken.UseDialogMessage, new Action<DialogMessage>(OnUseDialogMessage));
if (!ViewModelBase.IsInDesignModeStatic)
{
// Import the ViewModel module into the View DataContext so that
// the members of the ViewModel can be exposed
DataContext = _catalogService.GetModule(ModuleID.MainPageViewModel);
}
}
// Method to be executed when receiving the message
private void OnLoadScreenMessage(string moduleId) {
object newScreen;
try
{
// Import selected View module and then
// set the commandArg for UI changes
switch (moduleId)
{
case ModuleID.ProductListView:
newScreen = _catalogService.GetModule(ModuleID.ProductListView);
break;
// Add for other modules here
default:
throw new NotImplementedException();
}
// Set the new screen
MainContent.Content = newScreen;
// UI - Set link button state
SetLinkButtonState(moduleId);
}
catch (Exception ex)
{
OnRaiseErrorMessage(ex);
}
}
// UI
private void SetLinkButtonState(string buttonArg)
{
foreach (UIElement child in LinksStackPanel.Children)
{
HyperlinkButton hb = child as HyperlinkButton;
if (hb != null && hb.Command != null)
{
if (hb.CommandParameter.ToString().Equals(buttonArg))
{
VisualStateManager.GoToState(hb, "ActiveLink", true);
}
else
{
VisualStateManager.GoToState(hb, "InactiveLink", true);
}
}
}
}
private void OnRaiseErrorMessage(Exception ex)
{
// Error message display
ChildWindow errorWin = new ErrorWindow(ex.Message, ex.StackTrace);
errorWin.Show();
}
private void OnUseDialogMessage(DialogMessage dialogMessage)
{
// MVVMLight DialogMessage callback processes
if (dialogMessage != null)
{
MessageBoxResult result = MessageBox.Show(dialogMessage.Content,
dialogMessage.Caption, dialogMessage.Button);
dialogMessage.ProcessCallback(result);
}
}
}
}
|
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.
Shenwei is a software developer and architect, and has been working on business applications using Microsoft and Oracle technologies since 1996. He obtained Microsoft Certified Systems Engineer (MCSE) in 1998 and Microsoft Certified Solution Developer (MCSD) in 1999. He has experience in ASP.NET, C#, Visual Basic, Windows and Web Services, Silverlight, WPF, JavaScript/AJAX, HTML, SQL Server, and Oracle.