powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
13 сообщений из 13, страница 1 из 1
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37848701
jupiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу, чтобы кнопка Сохнанить становилась активна только после внесения изменений. Для этого я решил привязаться к свойству HasChanges объекта типа DomainContext (у меня он имеет имя context), связывающего приложение SilverLight с базой данных. В упрощенном виде это выглядело бы так:

Код: xml
1.
<Button x:Name="Save" IsEnabled= "{Binding HasChanges}"/>



Действительно, если в базе были сделаны изменения, то context.HasChanges == true

Проблема в том, что изменения свойства HasChanges НЕ вызывают обновления привязанного объекта. Я даже пробовал программно привязаться к событию изменения свойства DomainContext:

Код: c#
1.
2.
3.
4.
5.
6.
7.
            context.PropertyChanged += (s0, e0) =>
            {
                if (e0.PropertyName == "HasChanges")
                {
                    Save.IsEnabled = context.HasChanges;
                }
            };



Но событие изменения свойства HasChanges вообще не приходит в обработчик. RIA меняет свойство HasChanges с false на true и обратно молча, втихаря. Почему?

Спасибо.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37848963
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jupiter,

посмотри ошибки привязки(binding) в output window.
и включи их вывод для начала в самой студии.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37850064
jupiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiKпосмотри ошибки привязки(binding) в output window.
и включи их вывод для начала в самой студии.
Привязка уже не в счет. Как я писал, после того, как не сработала привязка, я стал пробовать БЕЗ НЕЕ. Поставил обработчик на событие context.PropertyChanged. В этот обработчик приходят некоторые события, но только не HasChanges, которое меня интересует. Я уверен, что если бы приходило событие PropertyChanged на HasChanges, то обновлялась бы и привязка. Это звенья одной цепи.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37850356
почему так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jupiter,

почему Binding без Mode=TwoWay ?
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37850628
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jupiterRIA меняет свойство HasChanges с false на true и обратно молча, втихаря. Почему?Потому что оно так написано?
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37850633
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему такпочему Binding без Mode=TwoWay ?Потому что это тут не надо.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37850789
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит нету там INotifyPropertyChanged.
Раз нету, надо самому сотворить.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851006
jupiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pshikЗначит нету там INotifyPropertyChanged.
Раз нету, надо самому сотворить.
Ну а как туда влезть-то? Если DomainContext криво реализует INotifyPropertyChanged, то как я могу это исправить?
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851069
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jupiter,

поищи вдруг там extensions есть :) в domaincontext
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851281
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так кто-то решил проблему

1. Implement INotifyPropertyChanged (since ObjectContext doesn't do this)

2. Create a get property HasChanges, which checks the ObjectStateManger for changed entities.

3. Subscribe to the ObjectMaterialized event to monitor the execution and loading of entities from your storage

4. For each entity that trigger ObjectMaterialized event, subscribe to the PropertyChanged event

5. Whenever the PropertyChanged event for the entity is triggered, trigger the PropertyChanged event for the ObjectContext you created in step 1 for the property HasChanges.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851348
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При попытке прикручивания нотификации изменений к DomainContext нарушается принцип единичной ответственности.
Поэтому там нет такого интерфейса, его место только в Model. Должен быть нормальный MVVM, где с помощью WCF Ria реализован патеррн IRepository. Иначе будет только говнокод.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851757
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaПри попытке прикручивания нотификации изменений к DomainContext нарушается принцип единичной ответственности.
Поэтому там нет такого интерфейса, его место только в Model. Должен быть нормальный MVVM, где с помощью WCF Ria реализован патеррн IRepository. Иначе будет только говнокод.

Ну а если без MVVM?
Boolean меняет значение, но лишь система нотификации не работает....потому как нет обработки события.
Нагружать лишними Event-мит не захотели и правильно...а кому надо, то сделают.

Вообще такие задачи делаются на объектном уровне, а не на уровне DomainContext.
Т.е есть MyList<Items> с INotifyPropertyChanged внутри, вот его состояние и надо использовать для Button.Enabled=MyList.Changed
Тогда всё заработает как надо.

Много лет framework CSLA использую....этот автор консультировал команду RIA Service как надо делать. Но они ещё далеко.
Отказался от RIA, конечно можно время сэкономить...но не понравилось, что куча условностей которые надо помнить как и что там автогенерация кода создаёт.
Для несложных проектов то, что надо, а если много логики, то мне кажется не лучщее.
...
Рейтинг: 0 / 0
Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
    #37851796
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект может сложным в общем случае и нужно отслеживать подобные события в дочерних.
В csla это давно решено.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight RIA: не выстреливает событие PropertyChanged для HasChanges у DomainContext
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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