我很确定这个问题已经有人回答过了,但我找不到它。
我正在尝试使用TabControl来切换用户控件(每个选项卡都不同,因此不使用Items)
以下是详细说明: 我有我的主视图和3个用户控件。Mainview有一个TabControl-每个选项卡应显示不同的用户控件。
我可以轻松地设置tabcontrol contect为usercontrol,但这样它就不与viewmodel绑定,只与视图绑定。
因此,我在我的VM中使用Conductor和ActivateItem。这里开始变得奇怪/令人沮丧。应用程序以Tab0选择启动,但Tab2(最后一个选项卡)内容。单击任何其他选项卡,加载该选项卡的正确视图模型。点击返回到Tab0,也会加载正确的内容。
我该如何停止这个?另外,我真的很希望切换选项卡时不会重新初始化视图模型,清除已经输入的字段。
无论如何,这是我的一些源代码,我要把它放在这里然后去处理其他事情,以免弄坏我的鼠标。
视图:
<TabControl HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row ="1">
<TabItem Header="PC Information">
<Grid>
<ContentControl x:Name="LoadRemoteInfo" cal:View.Model="{Binding ActiveItem}"/>
</Grid>
</TabItem>
<TabItem Header="Remote Tools">
<Grid>
<ContentControl x:Name="LoadRemoteTools" cal:View.Model="{Binding ActiveItem}"/>
</Grid>
</TabItem>
<TabItem Header="CHRemote">
<Grid>
<ContentControl x:Name="LoadCHRemote" cal:View.Model="{Binding ActiveItem}"/>
</Grid>
</TabItem>
</TabControl>
以及 ViewModel:
class MainViewModel : Conductor<object>
{
RemoteInfoViewModel remoteInfo = new RemoteInfoViewModel();
RemoteToolsViewModel remoteTools = new RemoteToolsViewModel();
CHRemoteViewModel chRemote = new CHRemoteViewModel();
public MainViewModel()
{
ActivateItem(remoteInfo);
}
public void LoadRemoteInfo()
{
ActivateItem(remoteInfo);
}
public void LoadRemoteTools()
{
ActivateItem(remoteTools);
}
public void LoadCHRemote()
{
ActivateItem(chRemote);
}
}