Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка Click в xaml 
:(
    Опции темы
sealmu
Дата 15.3.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Возможноли по событию Click в Xaml

1) Вызвать обработчик из другого класса(не Code Behind)?
2) Передать параметер в обработчик?
3) Выполнить статический метод из другого класса?

PM MAIL   Вверх
-Mikle-
Дата 16.3.2011, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



1) стандартно нет
2) стандартно нет
3) стандартно нет

Без код-бехинда обработать клик можно только через команды, тригеры, поведения и атачед-проперти.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
sealmu
Дата 16.3.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



А как это можно реализовать через Attached Dependency Property?
PM MAIL   Вверх
Kefir
Дата 16.3.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



sealmu, создаем саму проперти (к примеру <Button local:ButtonEx.HandleClick="true"/>) и при изменении значения привязываем то что надо. Условно:
Код

public static void OnHandleClickChanged(DependencyObject d, BlablaaChangedArgs e)
{
  if((bool)e.NewValue) ((Button)d).Click += MyVeryOwnAndSpecialClickHandler;
}


Я в довесок ещё обычно храню какой-нибудь List<WeakReference> чтобы не привязываться дважды к одному и тому же элементу.
PM MAIL WWW Skype   Вверх
sealmu
Дата 16.3.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
sealmu
Дата 17.3.2011, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



Я прикрепляю Attached Property :

Код

 <Button  Loaded="btn1_Loaded" local:CustomProperties.RunStoryboard="88"



Код

public class CustomProperties
    {
        public static DependencyProperty RunStoryboardProperty;

        public static string GetRunStoryboard(DependencyObject obj)
        {
            return (string)obj.GetValue(RunStoryboardProperty);
        }

        public static void SetRunStoryboard(DependencyObject obj, string value)
        {
            obj.SetValue(RunStoryboardProperty, value);
        }

        static CustomProperties()
        {
            PropertyChangedCallback RunStoryboardChangedCallback = new PropertyChangedCallback(RunStoryboardChanged);
            PropertyMetadata metadata = new PropertyMetadata("",RunStoryboardChangedCallback);
            
            RunStoryboardProperty = DependencyProperty.Register("RunStoryboard", typeof(string), typeof(CustomProperties), metadata);

            //var metadata = new PropertyMetadata(null);
            //RunStoryboardProperty = DependencyProperty.RegisterAttached("RunStoryboard", typeof(string), typeof(CustomProperties), metadata);
        }

        static void RunStoryboardChanged(DependencyObject property, DependencyPropertyChangedEventArgs args)
        {
            var oldValue = args.OldValue;

            var newValue = args.NewValue;
        }

    }


и получаю ошибку : Debugging resource string are unavailable.... в редакторе XAML


p.s. если я не определяю PropertyChangedCallback то все работает.
в чем проблема?
PM MAIL   Вверх
-Mikle-
Дата 18.3.2011, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Тут надо использовать метод DependencyProperty.RegisterAttached.

Цитата(sealmu @  18.3.2011,  00:30 Найти цитируемый пост)
если я не определяю PropertyChangedCallback то все работает

Наверное ты проверяешь это, раскоментировав код ниже
Цитата(sealmu @  18.3.2011,  00:30 Найти цитируемый пост)
//var metadata = new PropertyMetadata(null);
//RunStoryboardProperty = DependencyProperty.RegisterAttached("RunStoryboard", typeof(string), typeof(CustomProperties), metadata);

где как раз таки и вызывается RegisterAttached.



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.