我正在关注wpf / mvvm方法。我需要一个标签控件...有多行...我的意思是父/子行。当用户单击选项卡时,应显示其下的所有子选项卡...但只应加载一个子选项卡下的页面。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
是的,您可以通过将选项卡Control中的SelectedTabIndex属性绑定到ViewModel中的字符串来实现。 (因此,整个过程就在于如何在ViewModel中设计数据结构。)
关于选择Tab时加载Tab内容:
最初,您可以从ViewModel调用服务并获取选项卡数量,将其填充到Observable集合并将选项卡绑定到集合。您可以在ViewModel中拥有一个名为SelectedTab的属性,其值为-1。现在,在获得选项卡数量并将这些选项卡绑定到选项卡控件(我没有加载选项卡的内容;只显示选项卡)之后,您可以设置SelectedTab = 0,并且在setter中您可以传递TabId和加载Tab的数据。
private string selectedTab = -1;
public string SelectedTab
{
get { return selectedTab; }
set {
selectedTab = value;
LoadTabContent(selectedTab);
OnPropertyChanged("SelectedTab"); // I have implemented INotifyPropertyChanged event
}
}
但请确保您没有太多选项卡因为应用程序执行得非常糟糕,每个选项卡中包含太多选项卡和太多数据,因为每次选择不同的选项卡时,WPF都会从可视树中清除旧选项卡的内容
答案 1 :(得分:-1)
修改强>
您应该持有一个父标签,该标签将保留标签并绑定到此集合
问题出在哪里 public ObservableCollection> MyCollection {get;组;你必须在同一时间把它们全部拿走。
因此我建议你举行
IEnumerable _modules
每次加载antoher选项卡时,您都会动态地执行IEnumerable _modules 清楚(你可以通过使用触发器和命令来实现)你可以为每个项目调用dispoe
希望这次我理解你