|
/*
In App.xaml:
<Application.Resources>
<vm:ViewModelLocator xmlns:vm="clr-namespace:SLMapTest.ViewModel"
x:Key="Locator" />
</Application.Resources>
In the View:
DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
*/
namespace SLMapTest.ViewModel
{
/// <summary>
/// This class contains static references to all the view models in the
/// application and provides an entry point for the bindings.
/// <para>
/// Use the <strong>mvvmlocatorproperty</strong> snippet to add ViewModels
/// to this locator.
/// </para>
/// <para>
/// In Silverlight and WPF, place the ViewModelLocator in the App.xaml resources:
/// </para>
/// <code>
/// <Application.Resources>
/// <vm:ViewModelLocator xmlns:vm="clr-namespace:SLMapTest.ViewModel"
/// x:Key="Locator" />
/// </Application.Resources>
/// </code>
/// <para>
/// Then use:
/// </para>
/// <code>
/// DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
/// </code>
/// <para>
/// You can also use Blend to do all this with the tool's support.
/// </para>
/// <para>
/// See http://www.galasoft.ch/mvvm/getstarted
/// </para>
/// </summary>
public class ViewModelLocator
{
private static SLMapViewModel _viewModelSLMap;
/// <summary>
/// Gets the ViewModelPropertyName property.
/// </summary>
public static SLMapViewModel ViewModelPropertyNameStatic
{
get
{
if (_viewModelSLMap == null)
{
CreateViewModelPropertyName();
}
return _viewModelSLMap;
}
}
/// <summary>
/// Gets the ViewModelPropertyName property.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public SLMapViewModel SLMapVM
{
get
{
return ViewModelPropertyNameStatic;
}
}
/// <summary>
/// Provides a deterministic way to delete the ViewModelPropertyName property.
/// </summary>
public static void ClearViewModelPropertyName()
{
_viewModelSLMap.Cleanup();
_viewModelSLMap = null;
}
/// <summary>
/// Provides a deterministic way to create the ViewModelPropertyName property.
/// </summary>
public static void CreateViewModelPropertyName()
{
if (_viewModelSLMap == null)
{
_viewModelSLMap = new SLMapViewModel();
}
}
private static MainViewModel _mainViewModel;
/// <summary>
/// Gets the ViewModelMain property.
/// </summary>
public static MainViewModel ViewModelMainStatic
{
get
{
if (_mainViewModel == null)
{
CreateViewModelMain();
}
return _mainViewModel;
}
}
/// <summary>
/// Gets the ViewModelMain property.
/// </summary>
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
"CA1822:MarkMembersAsStatic",
Justification = "This non-static member is needed for data binding purposes.")]
public MainViewModel ViewModelMain
{
get
{
return ViewModelMainStatic;
}
}
/// <summary>
/// Provides a deterministic way to delete the ViewModelMain property.
/// </summary>
public static void ClearViewModelMain()
{
_mainViewModel.Cleanup();
_mainViewModel = null;
}
/// <summary>
/// Provides a deterministic way to create the ViewModelMain property.
/// </summary>
public static void CreateViewModelMain()
{
if (_mainViewModel == null)
{
_mainViewModel = new MainViewModel();
}
}
/// <summary>
/// Cleans up all the resources.
/// </summary>
public static void CleanupMain()
{
ClearViewModelMain();
}
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
////if (ViewModelBase.IsInDesignModeStatic)
////{
//// // Create design time view models
////}
////else
////{
//// // Create run time view models
////}
}
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}
}
|
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.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.