C# 命令绑定无法使用WPF
我有一个命令绑定到WPF中的一个按钮,但就我个人而言,我无法启动该函数 XAML ControlPanelViewModel是我正在使用的虚拟机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
<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;
}
}