Click here to Skip to main content
15,897,371 members
Articles / Hosted Services / Azure

Exploring Opportunities for the Cloud: Part 2

Rate me:
Please Sign up or sign in to vote.
4.91/5 (7 votes)
20 Jan 2011CPOL18 min read 23K   210   8  
A series of articles exploring Azure development featuring Bing Maps and phone.
/*
  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>
    /// &lt;Application.Resources&gt;
    ///     &lt;vm:ViewModelLocator xmlns:vm="clr-namespace:SLMapTest.ViewModel"
    ///                                  x:Key="Locator" /&gt;
    /// &lt;/Application.Resources&gt;
    /// </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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions