2012-03-07 28 views
0

我正在尋找一個使用可編輯網格來顯示實體的MVVM應用程序的好例子。我已經嘗試將一個網格綁定到一個ObservableCollection實體上,這些實體沒有任何問題。我想要做的唯一事情就是綁定一個保存按鈕,以便在模型中存在驗證錯誤時禁用它。可編輯網格MVVM實體框架示例應用程序

回答

1

也許這樣的事情:

class MyCustomCommand : ICommand 
    { 
     public MyCustomCommand(ObservableCollection<object> collection) 
     { 
      collection.CollectionChanged += (s, e) => 
       { 
        if (CanExecuteChanged != null) 
         CanExecuteChanged(this, new EventArgs()); 
       }; 
     } 

     public bool CanExecute(object parameter) 
     { 
      return your condition; 
     } 

     public event EventHandler CanExecuteChanged; 

     public void Execute(object parameter) 
     { 
      ... 
     } 
    } 
+0

感謝您的回答。如果我想使用Caliburn.Micro來做到這一點,是否有更好的方法來實現這種行爲?對不起,如果這個問題沒有道理,但我剛開始使用MVVM/Caliburn並嘗試讓自己習慣於這種風格。 – Eggi 2012-03-07 09:25:19

+1

我不知道caliburn微型框架,但似乎他們使用行動來實現這一任務:http://devlicio.us/blogs/rob_eisenberg/archive/2010/07/17/caliburn-micro-soup-to-nuts- pt-3-all-about-actions.aspx – Jonas 2012-03-07 09:31:23

+0

Caliburn Micro消除了對ICommand的需求。 – 2012-03-09 07:50:16

1

您需要在viewmodel中將ICommand屬性綁定到Button的Command屬性。在CanExecute方法中,您可以檢查是否有任何驗證錯誤。如果是,返回False否則返回True。按鈕將自動啓用/停用。

+0

我現在有一個ObservableCollection所有實體。所以我的問題是,如何禁用在此集合中的某些內容更改時調用的按鈕的方法?而且,如果以這種方式綁定網格甚至是一個好主意。 – Eggi 2012-03-07 08:17:49

+0

當某些內容發生更改時,您不必禁用此按鈕,但在發生某些驗證錯誤時必須將其禁用。只需綁定Button Command並相應地實現CanExecute方法,就完成了! – gaurawerma 2012-03-07 08:49:38

相關問題