UserControl设计

时间:2015-03-04 11:43:05

标签: c# wpf mvvm

我必须为AccountManagement写一个新的UserControl。要在您的应用程序中集成多个TabItem,我的UserControl必须实现IModule界面,如下所示:

public interface IModule : INotifyPropertyChanged
{
  FrameworkElement TabContent { get; }
  ImageSource TabIcon { get; }
  string TabTitle { get; }
}

我想用MVVM为AccountManagement构建UserControl,所以我想在我的ViewModel中实现IModule接口。

我的两个问题是:

  1. 这是一个很好的解决方案,还是我更愿意在我的View-CodeBehind中实现IModule

  2. 如果我在ViewModel中实现IModule,我如何将View作为TabContent传递给父级?

1 个答案:

答案 0 :(得分:0)

没有。 FrameworkElement是一个视图概念,不应该在ViewModel中。我假设您必须在代码隐藏中实现它,但为什么不了解其他选项卡的编写方式并确保您与现有代码库保持一致?

编辑: 您仍然需要在视图中实现上述内容。所有这三个属性都是基于视图的,可能的例外是TabTitle,它可以从视图模型中提取其名称。没有什么可以阻止你向MVVM转移选项卡的内容,但是这个现有的需求必须在视图中完成。

判断VM中是否存在某些内容的一个好的经验法则是考虑是否可以在没有任何视图的情况下对VM进行单元测试,或者理论上是否可以编写基于文本的控制台视图来驱动VM。