Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过WPF命令模式启用提交/取消按钮_C#_Wpf_Mvvm - Fatal编程技术网

C# 通过WPF命令模式启用提交/取消按钮

C# 通过WPF命令模式启用提交/取消按钮,c#,wpf,mvvm,C#,Wpf,Mvvm,“我的视图”包含以下两个按钮: <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <Button Content="Start" Width="100" Height="30" Margin="20" Command="{Binding OkCommand}"/> <But

“我的视图”包含以下两个按钮:

<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>
问题:我希望按钮的行为是opp-这意味着当一个按钮被点击(提交)时,另一个按钮应该被禁用,反之亦然。首次加载表单时,默认情况下启用“提交btn”

我尝试了多种方法,但似乎无法实现

我在这里编写的是简单的MVVM代码,没有prism/事件聚合器概念


人们可以推荐(使用代码示例)这样的命令bheavior通常是如何处理的。

为什么您的命令不能引发ICommand.CanExecuteChanged事件?查看更新的代码-它包含所有事件-只是似乎不知道如何访问那里的btnState并将其设置为true或false谢谢Denis-这很有魅力!!!我一直在练习将按钮行为绑定到文本框(无论是否输入了值),因此这对我来说是一个难题。虽然一旦实现了这个解决方案,它就非常有意义。再次感谢
    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;
}
    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;
}