Какие свойства изменены в стороне клиента - PullRequest
1 голос
/ 10 ноября 2011

Я использую службы RIA с silverlight 4.

У меня есть объекты служб RIA, которые являются производными от этого класса,

System.ServiceModel.DomainServices.Client.Entity

Они помечаются как измененные (с использованием HasChangesполе, или поле EntityState), когда они не изменены.Мне нужен более надежный способ выяснить, какие из моих сущностей изменились.

Причина в том, что у меня есть три текстовых поля на моей сущности, простое текстовое поле, поле расширенного текста и поле HTML.Все они связаны до одного текста.Отображение их в моем редакторе управления привело к тонкому изменению форматированного текста и полей HTML, но не к полному текстовому полю.

Поэтому я хотел бы в идеале сделать что-то вроде этого:

'У сущности есть любые измененные поля, кроме полей HTML или Rich Text '

В текстовом поле будут отображаться «фактические» изменения, которые пользователь вносит в текст.

открытые члены базового класса Entity с именами «ModifiedProperties» и «OriginalValues», которые были бы идеальными, если бы был способ их использования?

1 Ответ

0 голосов
/ 11 ноября 2011

ОК, при ближайшем рассмотрении получается, что используемый мной элемент управления расширенным текстом не поддерживает привязку.Это означает, что в коде есть что-то вроде этого:

public void LoadText() // loads from the database and puts into the UI control
{
    control.RichText = entity.RichText;
    control.Html = entity.Html;
    control.Body = entity.Body;
}

и

public void UpdateText() // update the entity with the updated text
{
    entity.RichText = control.RichText;
    entity.Html = control.Html;
    entity.Body = control.Body;
}

Я использую сторонний элемент управления Liquid.RichTextBlock.Оказывается, в некоторых случаях этот элемент управления возвращает другой RichText и HTML, даже если текст не редактировался.Это может относиться к ширине элемента управления, который находится во всплывающем окне с изменяемым размером.

Элемент управления Liquid.RichTextBlock имеет свойство под названием «History», и я могу фактически использовать это свойство, чтобы сообщить мне, действительно ли пользователь обновилтекст.

В принципе как то так,

public void UpdateText() // update the entity with the updated text
{
    if (control.History.Count > 0) // the user has updated the format and or the text
    {
        entity.RichText = control.RichText;
        entity.Html = control.Html;
        entity.Body = control.Body;
    }
}
...