I’m still getting comfortable with WPF, so this might be a silly question. I’m tracking the source of a tab control issue and discovered that I don’t know the answer to the question in the title.
My Mvvm-Lite project template put the usual in the Windows opening tag:
DataContext="{Binding Source={StaticResource Locator}, Path=Main}"
And from somewhere else (I really don’t remember) I have this handy static resource:
<ObjectDataProvider x:Key="src" ObjectType="vm:MainViewModel" />
While I’m troubleshooting my tab control issue (I won’t bore you with those details here) I realized that I didn’t know if these two ways of pointing to the view model confilicted in any way. Two separate instances of the view model? I don’t think so cause the ViewModelLocator is holding a static reference to Main. Anyway, I just wanted to be sure that I haven’t made a “greenie” mistake.
Thanks,
Jim
I am pretty sure that this is going to create two different instances. You can easily verify this by placing a breakpoint in the MainViewModel constructor and running your application in debug mode.
ObjectDataProvider was introduced before MVVM was popular. I would argue that many objects in WPF are kind of obsoleted by MVVM, because now we create these objects and properties in code in the ViewModel layer. In your case, I guess that you probably don’t need the ObjectDataProvider, but can use the ViewModelLocator.Main everywhere instead.
Cheers,
Laurent