1

我有一个带有域服务的 Silverlight 应用程序。

实体对象(部分):

[EdmEntityTypeAttribute(NamespaceName="MiaoulisModel", Name="AbroadTravel")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class AbroadTravel : EntityObject
{
    /// <summary>
    /// No Metadata Documentation available.
    /// </summary>
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)]
    [DataMemberAttribute()]
    public global::System.String Description
    {
        get
        {
            return _Description;
        }
        set
        {
            OnDescriptionChanging(value);
            ReportPropertyChanging("Description");
            _Description = StructuralObject.SetValidValue(value, true);
            ReportPropertyChanged("Description");
            OnDescriptionChanged();
        }
    }
    private global::System.String _Description;
    partial void OnDescriptionChanging(global::System.String value);
    partial void OnDescriptionChanged();

这是我的带有自定义属性的部分类:

public partial class AbroadTravel : INotifyPropertyChanged
    {
        [DataMember]
        public String ShortDescription
        {
            get
            {
                if (this.Description == null)
                {
                    return this.Description;
                }
                if (this.Description.Contains("\n"))
                {
                    var index = this.Description.IndexOf("\n");
                    if (index < 50)
                    {
                        return this.Description.Substring(0, index) + " [...]";
                    }
                }
                if (this.Description.Length >= 50)
                {
                    return this.Description.Substring(0, 50) + " [...]";
                }

                return this.Description;
            }
        }
    }

在我的 DataGrid 中,我有:

<c1:Column x:Name="dgcDescription" Binding="{Binding Path=ShortDescription}" Width="4*" />

和一个 RichTextBox :

<c1:C1RichTextBox Text="{Binding Path=Description, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

当我更新描述值的 RichTextBox 时,具有 ShortDescription 的 DataGrid 不会更新。

任何的想法 ?(我不使用 MVVM,我使用 Code Behind)

4

1 回答 1

1

当您更改属性时,您需要告诉 UI 属性ShortDescription(自动计算的属性)已更改Description

为此,您需要在属性更改时为该属性引发PropertyChanged-Event 。否则,UI 现在有机会知道属性已更改并且应该更新绑定。ShortDescriptionDescriptionShortDescription

在 CodeBehind 中(在 Silverlight-Client-Project 中),您可以这样做:

public partial class AbroadTravel
  // omitted your code

  partial void OnDescriptionChanged(){
     RaisePropertyChanged("ShortDescription");
  }
}
于 2012-10-04T08:49:46.043 回答