Гость
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF4, DependencyProperty, PropertyChangedCallback, интересный факт. / 13 сообщений из 13, страница 1 из 1
31.05.2012, 08:23
    #37818913
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
Если при описании свойства указан value-тип ( а может только для примитивных типов вроде int, double и т. п. ), событие PropertyChanged не возникает при присвоении того же значения , что хранится в свойстве. Если тип свойства меняем на object - PropertyChanged вызывается всегда, в том числе и когда присваивается то же значение. Возможно такое поведение имеет место для всех ref-типов, не проверял.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
PersID = 10; // changed
PersID = 20; // changed
PersID = 20; // changed только в случае, если тип свойства object

...

        #region PersID Property

        public static readonly DependencyProperty PersIDProperty =
            DependencyProperty.Register(
                "PersID",
                typeof(int?), // тут меняем на typeof(object) и PropertyChanged начинает срабатывать всегда
                typeof(FrmPersonalDetail)
            );

        public int? PersID
        {
            get { return (int?)GetValue(PersIDProperty); }
            set { SetValue(PersIDProperty, value); }
        }

        #endregion


Кто-нибудь встречал описание этого явления в документации по WPF ?
...
Рейтинг: 0 / 0
31.05.2012, 11:06
    #37819150
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
Алексей К,
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public static readonly DependencyProperty ValueProperty =
    DependencyProperty.Register(
        "Value", typeof(decimal), typeof(NumericUpDown),
        new FrameworkPropertyMetadata(MinValue, new PropertyChangedCallback(OnValueChanged),
                                      new CoerceValueCallback(CoerceValue)));

private static object CoerceValue(DependencyObject element, object value)
{
    decimal newValue = (decimal)value;

    newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue));

    return newValue;
}

private static void OnValueChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown control = (NumericUpDown)obj;

    RoutedPropertyChangedEventArgs<decimal> e = new RoutedPropertyChangedEventArgs<decimal>(
        (decimal)args.OldValue, (decimal)args.NewValue, ValueChangedEvent);
    control.OnValueChanged(e);
}



попробуй сделать, как в этом хитром примере.
...
Рейтинг: 0 / 0
31.05.2012, 11:15
    #37819177
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
AlexeiKпопробуй сделать, как в этом хитром примере.Да я знаю как в моём случае сделать. Мне бы ссылку на MSDN где подробно описано это поведение.
...
Рейтинг: 0 / 0
31.05.2012, 11:20
    #37819185
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
Алексей К,

а как сделать в твоем случае?
похоже ссылку не получишь, только через рефлектор.
...
Рейтинг: 0 / 0
31.05.2012, 11:30
    #37819218
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
AlexeiKа как сделать в твоем случае?Как я уже писал, если хочется чтобы PropertyChanged возникал в случае присвоения того же значения - поставить свойству тип object . Типизированный get/set можно оставить как есть.
AlexeiKпохоже ссылку не получишь, только через рефлектор.Жаль.
...
Рейтинг: 0 / 0
31.05.2012, 11:32
    #37819224
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
Алексей К,

а ты заметил в том примере, который я из мсдн взял, что там без object обходятся?
...
Рейтинг: 0 / 0
31.05.2012, 11:42
    #37819246
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
AlexeiKАлексей К,

а ты заметил в том примере, который я из мсдн взял, что там без object обходятся?Моё решение мне нравится больше. Более того, мне недостаточно просто получить PropertyChanged Callback у одного свойства. Мне надо ещё чтобы датабиндинги сработали соответствующим образом, чтобы возникло PropertyChanged у "прибинденных" свойств.
...
Рейтинг: 0 / 0
31.05.2012, 15:16
    #37819780
уТКа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
мне видится у кого-то началось раздвоение личности :D
...
Рейтинг: 0 / 0
31.05.2012, 15:19
    #37819784
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
AlexeiKпопробуй сделать, как в этом хитром примере.Более подробно посмотрел "хитрый пример". Он не решает описанную проблему.
...
Рейтинг: 0 / 0
31.05.2012, 15:19
    #37819786
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
уТКамне видится у кого-то началось раздвоение личности :D:-)
...
Рейтинг: 0 / 0
31.05.2012, 18:15
    #37820258
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
вот в прошлом у меня было такое только с АлексейК
тут много таких )
...
Рейтинг: 0 / 0
01.06.2012, 09:50
    #37820917
enigmatic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
AlexeiKАлексей К,

а ты заметил в том примере, который я из мсдн взял, что там без object обходятся?
А можно ссылку на пример, который вы из MSDN взяли?
...
Рейтинг: 0 / 0
01.06.2012, 10:53
    #37821042
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF4, DependencyProperty, PropertyChangedCallback, интересный факт.
enigmatic,

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


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