2012-04-17 70 views
2

我查看包含以下2个按钮:启用通过WPF命令模式提交/取消按钮

<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <Button Content="Start" Width="100" Height="30" Margin="20" Command="{Binding OkCommand}"/> 
     <Button Content="Cancel" Width="100" Height="30" Margin="20" Command="{Binding CancelCommand}"/> 
</StackPanel> 

在我的虚拟机 - 我有命令拦截设置。

class StockViewModel 
{ 
    #region Properties 
    public ICommand OkCommand { get; set; } 
    public ICommand CancelCommand { get; set; } 
    #endregion 

#region Constructor 
    public StockViewModel() 
    { 
     OkCommand = new myCommand(myOkExecute, myCanOkExecute); 
     CancelCommand = new myCommand(myCancelExecute, myCanCancelExecute); 
    } 
    #endregion 

    private void myOkExecute (object parameter) 
    { 
     ...... 
    } 

    private bool myCanOkExecute(object parameter) 
    { 
     ........ 
    } 

    private bool myCanCancelExecute(object parameter) 
    { 
     ....... 
    } 

    private myCanCancelExecute(object parameter) 
    { 
    ............ 
    } 
    #endregion 


    public class myCommand : ICommand 
    { 

    } 

问:我想在按钮的行为是OPP - 这意味着当点击一个(提交)其他应当由残疾人,反之亦然。当表单首次加载 - Submit btn默认启用。

我尝试了多种方式 - 但似乎无法得到这个工作。

我在这里做普通的MVVM代码 - 没有棱镜/事件聚合器的概念。

人们可以推荐(使用代码smaple)一般如何处理这样的命令bheavior。

+0

为什么你的命令不能引发ICommand.CanExecuteChanged事件? – Rich 2012-04-17 20:36:53

+0

查看更新的代码 - 它有所有的事件 - 只是似乎无法计算如何访问btnState并将它们设置为true或false – Patrick 2012-04-17 21:04:15

回答

3
private bool IsOkToExecute 
    { 
     get { return _isOkToExecute; } 
     set 
     { 
      _isOkToExecute = value; 
      RaisePropertyChanged("IsOkToExecute"); 
     } 
    } 

    private void myOkExecute (object parameter) 
    { 
     IsOkToExecute = false; 
    } 

    private void myCancelExecute(object parameter) 
    { 
     IsOkToExecute = true; 
    } 

private bool myCanOkExecute(object parameter) 
{ 
    return IsOkToExecute; 
} 

private bool myCanCancelExecute(object parameter) 
{ 
    return !IsOkToExecute; 
} 
+0

感谢Denis - 这就像一个魅力!我一直在练习将按钮行为绑定到文本框(无论是否输入了值),因此这对我来说是一个艰难的过程。虽然一旦实施这个解决方案 - 非常合理。 再次感谢 – Patrick 2012-04-18 00:53:25

+0

@Patrick,不客气! – 2012-04-18 01:51:58