mirror of
https://github.com/farcasclaudiu/myfriendsaround.git
synced 2026-06-29 15:01:45 +03:00
Added tag tag1 for changeset 4c285537b335
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
In App.xaml:
|
||||
<Application.Resources>
|
||||
<vm:ViewModelLocatorTemplate xmlns:vm="clr-namespace:MyFriendsAround.WP7.ViewModel"
|
||||
x:Key="Locator" />
|
||||
</Application.Resources>
|
||||
|
||||
In the View:
|
||||
DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
|
||||
|
||||
OR (WPF only):
|
||||
|
||||
xmlns:vm="clr-namespace:MyFriendsAround.WP7.ViewModel"
|
||||
DataContext="{Binding Source={x:Static vm:ViewModelLocatorTemplate.ViewModelNameStatic}}"
|
||||
*/
|
||||
|
||||
namespace MyFriendsAround.WP7.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 ViewModelLocatorTemplate in the App.xaml resources:
|
||||
/// </para>
|
||||
/// <code>
|
||||
/// <Application.Resources>
|
||||
/// <vm:ViewModelLocatorTemplate xmlns:vm="clr-namespace:MyFriendsAround.WP7.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>
|
||||
/// <para>
|
||||
/// In <strong>*WPF only*</strong> (and if databinding in Blend is not relevant), you can delete
|
||||
/// the Main property and bind to the ViewModelNameStatic property instead:
|
||||
/// </para>
|
||||
/// <code>
|
||||
/// xmlns:vm="clr-namespace:MyFriendsAround.WP7.ViewModel"
|
||||
/// DataContext="{Binding Source={x:Static vm:ViewModelLocatorTemplate.ViewModelNameStatic}}"
|
||||
/// </code>
|
||||
/// </summary>
|
||||
public class ViewModelLocator
|
||||
{
|
||||
private static MainViewModel _main;
|
||||
|
||||
/// <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
|
||||
////}
|
||||
|
||||
CreateMain();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Main property.
|
||||
/// </summary>
|
||||
public static MainViewModel MainStatic
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_main == null)
|
||||
{
|
||||
CreateMain();
|
||||
}
|
||||
|
||||
return _main;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the Main property.
|
||||
/// </summary>
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
|
||||
"CA1822:MarkMembersAsStatic",
|
||||
Justification = "This non-static member is needed for data binding purposes.")]
|
||||
public MainViewModel Main
|
||||
{
|
||||
get
|
||||
{
|
||||
return MainStatic;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Provides a deterministic way to delete the Main property.
|
||||
/// </summary>
|
||||
public static void ClearMain()
|
||||
{
|
||||
_main.Cleanup();
|
||||
_main = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Provides a deterministic way to create the Main property.
|
||||
/// </summary>
|
||||
public static void CreateMain()
|
||||
{
|
||||
if (_main == null)
|
||||
{
|
||||
_main = new MainViewModel();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cleans up all the resources.
|
||||
/// </summary>
|
||||
public static void Cleanup()
|
||||
{
|
||||
ClearMain();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user