Value of text box disapears - binding viewmodel to a tab (content control)
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 us开发者_StackOverflow中文版ing 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.
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...)
Here is a solution that creates a subclass of the TabControl.
http://eric.burke.name/dotnetmania/2009/04/26/22.09.28
精彩评论