据我理解你的问题,你可以通过让UC
暴露SelectedSubView
(或其他)财产解决这个问题:
public object SelectedSubView { get; }
同时,您绑定的单选按钮来的UC
其他属性和相应地更新SelectedSubView
(记得实施INotifyPropertyChanged)。根据选定的单选按钮属性,SelectedSubView
必须返回相应的ViewModel。
您然后绑定ContentPresenter到SelectedSubView
属性,并使用的DataTemplates选择基于当前SelectedSubView
的类型正确的用户控件(UC1,UC2或UC3)。
既然你只想隐藏不活动的意见,它可能是最好保持在他们各自的ViewModels,所以你可能想使他们在UC
类
public class UC
{
private MyFirstViewModel vm1;
private MySecondViewModel vm2;
private MyThirdViewModel vm3;
private object selectedVM;
public object SelectedSubView
{
get { return this.selectedVM; }
}
// This method should be called whenever one of the radio buttons
// are updated (from their bindings)
private void UpdateSelectedView()
{
this.selectedVM = // pick from vm1, vm2, vm3 according to radio button
// Remember to raise INotifyPropertyChanged for SelectedSubView
}
}
感谢马克的答复领域。 。你能否给我一个回想一下viewmodel或者如何在运行时设置viewmodel的想法? – 2010-03-08 09:51:53
@Ashish Ashu:更新了我的答案。 – 2010-03-08 10:33:09