我正在使用两个共享相同代码库并执行基本相同功能的WPF应用程序。 ApplicationA针对强大的用户,并包含我们支持的所有功能的所有功能。 ApplicationB更像是一个最终用户工具 - 它看起来基本相同,但为了尽可能简化事情,一些更高级的功能对用户是隐藏的。在类似的WPF应用程序之间共享视图
在这两个工具中有几乎相同的视图,唯一的区别是我们在ApplicationB中隐藏了一些控件。视图非常相似,因此为每个工具维护一个单独的副本是没有意义的。我们的视图模型知道它们正在运行哪个应用程序,所以我们目前通过将视图元素的可见性绑定到视图模型的属性来解决这个问题。
查看:
<SomeControl Visibility="{Binding Path=WhichApp}"> ...
视图模型:
public Visibility WhichApp
{
get
{
if (GetApp() == Apps.ApplicationB) return Visibility.Collapsed;
else return Visibility.Visible;
}
}
我不喜欢的的ViewModels负责处理的知名度,这是几乎从定义视图的属性。这种方法也限制了我们的视图模型在这两种工具之外的可重用性。
我对任何替代解决方案感兴趣,这些解决方案将帮助我在两个项目之间共享视图,同时保持视图和视图模型之间的关注点分离。
听起来像你应该巩固这两个,只是跟踪谁是权力用户和谁是最终用户。 – paqogomez 2014-10-02 16:20:30