tags:

views:

215

answers:

2

Based on the MVVM example by Josh Smith, I have implemented the multi tab option which binds to a different tab to a different view model using a simple datatemplate that binds a viewmodel to a view.

 <DataTemplate  DataType="{x:Type fixtureVM:SearchViewModel}">
    <SearchVw:SearchView/>
</DataTemplate>

The issue that I'm having, is when I switch tabs and then switch back again, the value in the textbox disappears. When I bind the Text in the textbox to a value in the ViewModel it does not disappear. This is fine, and I can overcome this but I am having another issue for example with the position of the scroll bar in a grid disappearing once the tab has lost focus.

Why is the value disappearing? I'm assuming it is a WPF sub system task that cleans up resources!? how can I avoid this? I also feel it might be slowing down my app.

+1  A: 

Read my post here about why this is happening. Basically, because you are connecting the View and ViewModel in a DataTemplate, the tab re-creates the view every time it receives the focus. And yes, this eats up more resources. You can fix this by hooking up the view and ViewModel in a different way (i.e. Catelog method, WAF, or using a different type of items control may do the trick as well...)

Brent
Thanks for that, I thought it would be one of those scenarios were no one has experienced my issue! What is the catelog method?
Eli Perpinyal
A: 

Here is a solution that creates a subclass of the TabControl.

http://eric.burke.name/dotnetmania/2009/04/26/22.09.28

Eli Perpinyal