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}" />

Description 値の RichTextBox を更新すると、ShortDescription の DataGrid が更新されません。

何か案が ?(MVVM は使用せず、Code Behind を使用します)

4

1 に答える 1

1

ShortDescriptionプロパティを変更するときは、プロパティ (自動計算されたプロパティ) が変更されたことをUI に伝える必要があります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 に答える