Silverlight 4.0 如何执行Silverlight ICommand?

Silverlight 4.0 如何执行Silverlight ICommand?,silverlight-4.0,silverlight-3.0,command,routed-commands,icommand,Silverlight 4.0,Silverlight 3.0,Command,Routed Commands,Icommand,这是一个如此基本的问题,但我不得不问 在SL中,我有以下XAML: <UserControl.Resources> <local:Commands x:Key="MyCommands" /> </UserControl.Resources> <Button Content="Click Me" Command="{Binding Path=Click, Source={StaticResource MyCommands}}"

这是一个如此基本的问题,但我不得不问

在SL中,我有以下XAML:

<UserControl.Resources>
    <local:Commands x:Key="MyCommands" />
</UserControl.Resources>

<Button Content="Click Me" 
        Command="{Binding Path=Click, Source={StaticResource MyCommands}}"
        CommandParameter="Hello World" />
但是当我单击按钮时,命令的Execute()永远不会被触发


有什么诀窍吗?

没有诀窍,问题在于XAML和C#类之间的绑定。不能仅将字段绑定到属性

public class Commands
{
    public ClickCommand Click { get; set; }

    public Commands()
    {
        Click = new ClickCommand();
    }

    public sealed class ClickCommand : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            MessageBox.Show(parameter.ToString());
        }
    }
}
public class Commands
{
    public ClickCommand Click { get; set; }

    public Commands()
    {
        Click = new ClickCommand();
    }

    public sealed class ClickCommand : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            MessageBox.Show(parameter.ToString());
        }
    }
}