Как вы выполняете Silverlight ICommand? - PullRequest
0 голосов
/ 24 августа 2011

Это такой основной вопрос, но я должен задать.

В 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" />

И этот код позади:

public class Commands
{
    public ClickCommand 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 partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
    }
}

Но когда я нажимаю кнопку, команда Execute () никогда не запускается.

Есть ли хитрость?

1 Ответ

0 голосов
/ 22 сентября 2011

Нет хитрости, ваша проблема заключается в связывании между вашим классом 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());
        }
    }
}
...