how to parametrize an import in a View?
- by Gianluca Colucci
Hello everybody,
I am looking for some help and I hope that some good soul out there will be able to give me a hint :)
In the app I am building, I have a View. When an instance of this View gets created, it "imports" (MEF) the corresponding ViewModel.
Here some code:
public partial class ContractEditorView : Window
{
public ContractEditorView ()
{
InitializeComponent();
CompositionInitializer.SatisfyImports(this);
}
[Import(ViewModelTypes.ContractEditorViewModel)]
public object ViewModel
{
set
{
DataContext = value;
}
}
}
and here is the export for the ViewModel:
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(ViewModelTypes.ContractEditorViewModel)]
public class ContractEditorViewModel: ViewModelBase
{
public ContractEditorViewModel()
{
_contract = new Models.Contract();
}
}
Now, this works if I want to open a new window to create a new contract...
But it does not if I want to use the same window to edit an existing contract...
In other words, I would like to add a second construct both in the View and in the ViewModel: the original constructor would accept no parameters and therefore it would create a new contract; the new construct - the one I'd like to add - I'd like to pass an ID so that I can load a given entity... What I don't understand is how to pass this ID to the ViewModel import...
Thanks in advance,
Cheers,
Gianluca.