Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передать в ICommand EventArgs / 10 сообщений из 10, страница 1 из 1
08.07.2012, 23:32
    #37870942
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
Думал не буду писать, но все-таки решил написать - думаю те кто использует паттерн MVVM наверняка сталкивались с этим.
В общем есть кнопка или любой другой контрол, который при возникновении события - будет обрабатывать метод с соответствующими параметрами. Меня сейчас интересует параметр EventArgs, например для мышки это будет MouseEventArgs, или DrawnEventArgs, если я использую класс Drawn.

Как создать в WPF команду в отдельном файле с помощью ICommand z pyаю. Как передать параметры (даже если их несклько) - я знаю.
Но я никак не могу понять как мне можно передать параметр EventArgs. Ведь когда я привязываю команду к контролу я указываю - при каком событии запускать эту команду. Наверняка есть какие то готовые решения))

Пока вот что нашел http://weblogs.asp.net/alexeyzakharov/archive/2010/03/24/silverlight-commands-hacks-passing-eventargs-as-commandparameter-to-delegatecommand-triggered-by-eventtrigger.aspx.
Но мне не нравится что в этом примере и в других примерах предлагают пользоваться MVVM Light ToolKit.
Кто чт дельное может подсказать?
...
Рейтинг: 0 / 0
08.07.2012, 23:35
    #37870946
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
unknownfromrus,

о привет, пропал чтото ты тогда :)
...
Рейтинг: 0 / 0
08.07.2012, 23:37
    #37870951
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
AlexeiK,

Очень занят был - чуток вот высвободился)) Почаще буду заглядывать))
...
Рейтинг: 0 / 0
11.07.2012, 23:14
    #37875632
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
unknownfromrus,

Что, никто не в курсе?
Буду в выходные разбираться на основе той ссылки что получил. Надеюсь до понедельника полностью разберусь как передавать EventArgs через CommandParameter
...
Рейтинг: 0 / 0
12.07.2012, 07:00
    #37875785
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
unknownfromrus,

Может быть, как-то так ?
...
Рейтинг: 0 / 0
12.07.2012, 10:03
    #37875989
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
enigmatic,

Я уже писал выше - что этот вариант не прокатит, так как там используется Mvvm-Light.
А я не хочу использовать готовый Mvvm-Light.
Я отталкиваюсь от того, что пишу обычное приложение придерживаясь паттерна MVVM - то есть сам создаю View и т.п., а не жду когда мне тулкит его сгенерит
...
Рейтинг: 0 / 0
12.07.2012, 10:06
    #37875998
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
Как-то так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
    public class CommandTriggerAction : TriggerAction<UIElement>
    {
        #region Command Property

        public static readonly DependencyProperty CommandProperty =
            DependencyProperty.Register(
                "Command",
                typeof(ICommand),
                typeof(CommandTriggerAction)
            );

        public ICommand Command
        {
            get { return (ICommand)GetValue(CommandProperty); }
            set { SetValue(CommandProperty, value); }
        }

        #endregion

        #region CommandParameter Property

        public static readonly DependencyProperty CommandParameterProperty =
            DependencyProperty.Register(
                "CommandParameter",
                typeof(object),
                typeof(CommandTriggerAction)
            );

        public object CommandParameter
        {
            get { return (object)GetValue(CommandParameterProperty); }
            set { SetValue(CommandParameterProperty, value); }
        }

        #endregion

        protected override void Invoke(object parameter)
        {
            if (Command != null)
                Command.TryExecute(CommandParameter ?? parameter);
        }
    }

    public static class CommandHelper
    {
        public static bool TryExecute(this ICommand command, object parameter)
        {
            if (command.CanExecute(parameter))
            {
                command.Execute(parameter);
                return true;
            }
            return false;
        }
    }



зы: Мануал по TriggerAction<T> смотри в интернетах.
...
Рейтинг: 0 / 0
12.07.2012, 10:09
    #37876004
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
Алексей К,

А чем этот пример отличается от того примера - ссылку на который я давал в начале темы?
Я просто думал здесь кто-то реализовывал подобное и хотел посмотреть пример того как Вы реализовывали.
Либо может быть есть какое-то решение, которое отличается от того, который я давал в ссылке
...
Рейтинг: 0 / 0
12.07.2012, 10:16
    #37876014
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
unknownfromrusАлексей К,

А чем этот пример отличается от того примера - ссылку на который я давал в начале темы?
Я просто думал здесь кто-то реализовывал подобное и хотел посмотреть пример того как Вы реализовывали.
Либо может быть есть какое-то решение, которое отличается от того, который я давал в ссылке
Ссылку не смотрел. Видел коментарий
unknownfromrusНо мне не нравится что в этом примере и в других примерах предлагают пользоваться MVVM Light ToolKit.Приведённый мною пример к MVVM Light ToolKit не имеет никакого отношения. Здесь используется Expression Blend SDK .
...
Рейтинг: 0 / 0
12.07.2012, 11:10
    #37876142
unknownfromrus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать в ICommand EventArgs
Алексей К,

Ага, понял, спасибо - в выходные проверю.
Это хорошо, что твой пример не использует MVVM LightToolKit
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Передать в ICommand EventArgs / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]