繁体   English   中英

客户端实体中更改了哪些属性

[英]Which Properties Are Changed In Client Side Entity

我正在使用Silverlight 4运行RIA服务。

我有RIA服务实体,这些实体是从此类中派生的,

System.ServiceModel.DomainServices.Client.Entity

当它们未更改时,它们被标记为已更改(使用HasChanges字段或EntityState字段)。 我需要一种更可靠的方法来确定我的哪些实体已更改。

原因是我在实体上具有三个文本字段,即纯文本字段,富文本字段和HTML字段。 它们都链接到相同的文本。 在我的编辑器控件中显示它们会稍微修改富文本格式和HTML字段,但不会修改纯文本字段。

所以我想理想地做这样的事情,

“实体是否具有除HTML或RTF文本字段以外的任何其他修改字段”

纯文本字段将显示用户对文本进行的“实际”更改。

实体基类上有一些非公共成员,称为“ ModifiedProperties”和“ OriginalValues”,如果有使用它们的方法,这将是理想选择吗?

好的,请仔细检查一下我正在使用的RTF控件不支持绑定。 这意味着在代码中有这样的东西,

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控件具有一个称为“历史记录”的属性,我实际上可以使用该属性来告诉我用户是否实际上已更新了文本。

原则上来说,

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM