You should think more about DataTemplate.
Separate two different views, for example. MemberListingView.XAML and MemberEditView.XAML. Create view models for each view.
To put everything together, follow the data template technique:
<DataTemplate DataType="{x:Type vm:MemberListingVM}">
<AdornerDecorator>
<views:MemberListingView />
</AdornerDecorator>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:MemberEditVM}">
<AdornerDecorator>
<views:MemberEditView />
</AdornerDecorator>
</DataTemplate>
// Now use a content presenter
<ContentPresenter Content="{Binding CurrentView}" />
- , , .
private ViewModelBase _currentView;
public ViewModelBase CurrentView
{
get { return _currentView; }
set
{
_currentView = value;
RaisePropertyChanged("CurrentView");
}
}
public void OnSelectedMemberChanged(Member member)
{
CurrentView = new MemberEditVM(member);
CurrentView = MemberListingVM;
}