3

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.

abatishchev
  • 98,240
  • 88
  • 296
  • 433
Eli Perpinyal
  • 1,706
  • 3
  • 19
  • 35
  • You need to provide more details and more of your code. What TextBox? What scroll bar? What code (if any) do you execute when you switch tabs? By the way, there is no "WPF sub system task that cleans up resources" that might cause something like this. – Ray Burns May 14 '10 at 20:39

2 Answers2

2

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

Community
  • 1
  • 1
Brent
  • 1,743
  • 3
  • 16
  • 27
  • 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 May 18 '10 at 10:54
0

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

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

Eli Perpinyal
  • 1,706
  • 3
  • 19
  • 35