2012-03-07 58 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