在从Tab更改为Tab时,DataTemplate中声明的视图将继续创建



我一直在遵循MVVM模式来设计我的应用程序。然而,我注意到一件奇怪的事情。我有一个Tab控件,在其中我从MainViewModel中将ItemsSource指定为WorkSpaces的Binding。在项目中,我添加了不同的ViewModel。我已经为ViewModel数据类型定义了DataTemplate。

但是,当我单击一个选项卡时,每次都会创建一个新的视图。

示例代码我张贴在这里。

<Grid.Resources>
<DataTemplate DataType="{x:Type spavm:DashboardViewModel}">
<UIDashboard:DashboardView/>
</DataTemplate>
</Grid.Resources>
<dx:DXTabControl Grid.Row="2" Margin="5" 
Name="MainContentTabs"
ItemsSource="{Binding WorkSpaces}"
ItemHeaderTemplate="{StaticResource WorkspaceItemTemplate}">
</dx:DXTabControl>

从上面的内容来看,如果我切换到任何其他选项卡并重新访问我的DashboardView,它将再次被创建。

我遗漏了什么吗??我只需要DashboardView的一个实例。我怎样才能做到这一点。

如前所述,这是DevExpress中的设计。但是,有一个名为DestroyContentOnTabSwitching的属性可以设置为false。DX文档。

如果你的视图创建成本很高,你也可以考虑重构昂贵的逻辑来缓存它

最新更新