【问题标题】:Custom Entity object property doesn't update in Silverlight DataGridSilverlight DataGrid 中的自定义实体对象属性不更新
【发布时间】:2012-09-25 05:23:52
【问题描述】:

我有一个带有域服务的 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)

【问题讨论】:

    标签: wcf silverlight binding c1richtextbox


    【解决方案1】:

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

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

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

    public partial class AbroadTravel
      // omitted your code
    
      partial void OnDescriptionChanged(){
         RaisePropertyChanged("ShortDescription");
      }
    }
    

    【讨论】:

    • 这解决了我的问题;)。实际上,我的部分类在服务器端,我将它移到客户端并添加 OnDescriptionChanged,现在它可以工作了:) 非常感谢
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2023-04-09
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多