2012-04-30 40 views
0

我需要創建一個小的GUI應用程序來手動調用一些驅動程序命令。總共有大約40個命令,其中一些還有其他參數。尋找一個很好的方法來顯示mvvm的很多功能

請求是,所有的命令應該在一個頁面上。除此之外,沒有要求,因爲它只是一個測試環境,用戶體驗只是一個小問題。

當我開始這樣做「常規」的方式,只是爲參數添加按鈕和輸入元素,我結​​束了一個非常混亂的用戶界面。同時也感到明顯的錯誤做這樣的事情

<Button Command="{Binding DriverCommand} CommandParameter=1/> 

對於所有40個命令

所以我的問題是,什麼是使大量的命令參數變化可用的好辦法? 我更喜歡MVVM的方式,只是因爲我想進一步學習這種模式。 在我的viewmodel中有我的命令(作爲枚舉?)並且可以將它綁定到視圖中的控件的實現將是理想的。然後我可以用不同的驅動程序重用UI(這是非常可能的)。

在此先感謝

+0

可能更適合http://ux.stackexchange.com/。 – Jon

+0

@Jon取決於OP是否在爲此設計一個良好的用戶體驗,或僅僅是如何在WPF中實現一個基本的用戶界面。聽起來像是某種測試應用程序,這意味着一個簡單的用戶界面可能是好的。 –

+0

是的,一個簡單的用戶界面絕對可以,這是問題的一部分。 我無法將它們按任何優先級或任何東西分組,沒有正確或良好的順序。 – Daniel

回答

2

你可以用類似下面的東西去:

景觀的模型:

public class CommandDashboardViewModel 
{ 
    public ObservableCollection<DriverCommandViewModel> DriverCommands { get; set; } 
} 

public class DriverCommandViewModel 
{ 
    // all of these properties have to implement INPC 
    public string CommandText { get; set; } 
    public ICommand Command { get; set; } 
    public object CommandParameter { get; set; } 
} 

查看:

<!-- the DataContext of this view is instance of CommandDashboardViewModel --> 
<ItemsControl ItemsSource="{Binding DriverCommands}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Button Content={Binding CommandText} Command={Binding Command} CommandParameter={Binding CommandParameter}/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

我的推杆它我的頭頂一起,所以我對任何語法錯誤表示歉意。

+0

好的解決方案!要完成MVVM模式,您需要每個ViewModel對象「包裝」模型對象。我的意思是,ViewModel類可以有一個接受模型對象的構造函數,並且屬性可以是隻讀的,並且可以查看模型對象狀態 – Roberto

+0

謝謝!這是我正在尋找的。 – Daniel

相關問題