我正在使用兩個共享相同代碼庫並執行基本相同功能的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