我有一个选项卡式GUI,每个选项卡包含一个框架。 在其中一个框架中有一个DataGrid。 当用户select这个选项卡,我需要我的数据网格sorting,所以我使用TabControl SelectionChanged事件触发sorting。 但是,每次从DataGrid中select一个项目时都会触发此事件,即使这些标签本身保持不变。 我已经尝试了多个不同的事件:GotFocus为TabItem的一个TabItem的RequestBringIntoView 但他们似乎都受到这个问题的困扰。 这是什么原因造成的?
基本上我有我的MainViewModel.cs中: ObservableCollection<TabItem> MyTabs { get; private set; } 不过,我需要以某种方式不仅能够创build标签,而且还要在保持MVVM的同时将标签内容加载并链接到相应的视图模型。 基本上,我怎样才能得到一个用户控件作为tabitem的内容加载,并有该用户控件连线到适当的视图模型。 造成这个困难的部分是ViewModel不应该构造实际的视图项目,对吧? 或者可以吗? 基本上,这是MVVM是否合适: UserControl address = new AddressControl(); NotificationObject vm = new AddressViewModel(); address.DataContext = vm; MyTabs[0] = new TabItem() { Content = address; } 我只问,因为好,我构build一个ViewModel中的视图(地址控制),这对我来说听起来像一个MVVM no-no。