UPDATE Below
New to a WPF member, sorry if this was asked before.
I want to create a popup for creating an entity and another (or, if recommended) for editing / updating, but cannot easily get an empty ViewModel or load data for editing.
ViewModelLocator
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
SimpleIoc.Default.Register<CreateViewModel>();
SimpleIoc.Default.Register<EditViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public CreateViewModel Create
{
get
{
return ServiceLocator.Current.GetInstance<CreateViewModel>(Guid.NewGuid().ToString());
}
}
public EditViewModel Edit
{
get
{
return ServiceLocator.Current.GetInstance<EditViewModel>(Guid.NewGuid().ToString());
}
}
Main.xaml (using the same method for creating and editing)
<Window
//Hide namespaces, etc.
DataContext="{Binding Main, Source={StaticResource Locator}}">
In MainViewModel, I have a command that opens a new window for creating
Create create = new Create();
create.ShowDialog();
What if I type data in a text box and close it using the method below, the data appears there when I open it again, I used it Guid.NewGuid()in viewmodellocator to stop it as a single, but not a joy.
CreateViewModel public CreateViewModel() { CloseWindowCommand = RelayCommand (this.CloseWindow); }
private void CloseWindow(DXRibbonWindow window)
{
if (window != null)
{
window.Close();
}
}
, , .
var editVM = (new ViewModelLocator()).Edit;
editVM.LoadData(id);
.
TL;DR
MVVMLight ViewModelLocator ViewModel .
UPDATE
Guid.NewGuid().ToString()) viewmodel, , , .