2012-04-17 80 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