Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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_Data Binding - Fatal编程技术网

C# 命令绑定无法使用WPF

C# 命令绑定无法使用WPF,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个命令绑定到WPF中的一个按钮,但就我个人而言,我无法启动该函数 XAML ControlPanelViewModel是我正在使用的虚拟机 <Window.DataContext> <ControlPanel:ControlPanelViewModel/> </Window.DataContext> <Button x:Name="button" Command="{Binding NavCommand}" Content="But

我有一个命令绑定到WPF中的一个按钮,但就我个人而言,我无法启动该函数

XAML ControlPanelViewModel是我正在使用的虚拟机

<Window.DataContext>
    <ControlPanel:ControlPanelViewModel/>
</Window.DataContext>

   <Button x:Name="button" Command="{Binding NavCommand}" Content="Button" HorizontalAlignment="Left" Margin="264,219,0,0" VerticalAlignment="Top" Width="75"/>

ControlPanelViewModel.cs 公共控制面板视图模型() { NavCommand=新的中继命令(OnNav); } public RelayCommand NavCommand{get;private set;} 专用void OnNav(字符串目标) { Console.WriteLine(“这正在工作”); 交换机(目的地) { 案例“凭证”: CurrentViewModel=\u credentialViewModel; 打破 } }
现在,为了避免OnNav内部的逻辑,我再也看不到我的
控制台。writeline
被调用过。我已经被困在这个问题上好几个小时了。数据上下文看起来不错,安装看起来不错。让我知道是否需要查看RelayCommand类

问题可能来自实施。它是否继承自
ICommand
?如何实现
Execute
CanExecute
?在您的情况下,
CanExecute
应该返回
true

是,RelayCommand类是必需的。它可能永远不会调用OnNav,因为命令参数为null。顺便问一下,您是否尝试使用调试器运行应用程序并在OnNav方法内设置断点?@SirRufo:event如果未设置参数,将调用命令处理程序。。。刚刚检查过@adPartage您如何知道OP正在使用哪个RelayCommand类?
    public ControlPanelViewModel()
    {
        NavCommand = new RelayCommand<string>(OnNav);
    }

 public RelayCommand<string> NavCommand { get; private set; }

    private void OnNav(string destination)
    {
        Console.WriteLine("This is working");
        switch (destination)
        {
            case "credential":
                CurrentViewModel = _credentialViewModel;
                break;
        }
    }