使用WPF,MVVM(Caliburn库,ViewModel优先) 我有一个可以显示两件事的视图,ChartA和ChartB。
将视图切换到另一个时,我不会再次创建视图,而是将其保存到本地成员。
当我从ChartA视图转到ChartB时,再次转到ChartA,再次调用OnAttached行为。比,行为中的事件发生两次!
为什么行为'再创造',我该怎样才能阻止它。 我不想处置视图以允许两者之间的快速导航。
代码:
在我的主窗口视图中,我定义了内容控件(MainWindowView.xaml):
<ContentControl x:Name="MainFrame" Grid.Row="2" Grid.Column="1" Grid.RowSpan="1" Margin="10,0,0,0"/>
在视图模型(MainWindowViewModel.cs)中:
public MainWindowViewModel() {
...
// Views
m_ChartA = new ChartAViewModel(...);
m_ChartB = new ChartBViewModel(...);
MainFrame = m_ChartA;
...
}
我的导航:
public void GoToChartBView() {
...
MainFrame = m_ChartB;
}
public void GoToChartAView() {
...
MainFrame = m_ChartA;
}
ChartAViewModel和ChartBViewModel具有在每个导航中重新附加行为的视图。
这是一个非常简化的代码,但这就是想法。