Reset and load data into the model using MVVM Light ViewModelLocator

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, , , .

+4

Source: https://habr.com/ru/post/1538849/


All Articles