2012-10-04 28 views
1

我有一個帶有域服務的Silverlight應用程序。自定義實體對象屬性不會在Silverlight DataGrid中更新

實體對象(上篇):

[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(); 

這是我的部分CLASSE與自定義屬性:

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的Description值時,帶有ShortDescription的DataGrid不會更新。

任何想法? (我不使用MVVM,我使用代碼隱藏)

回答

1

當您更改屬性Description時,您需要告訴UI屬性ShortDescription(自動計算的屬性)已更改。

爲了做到這一點,您需要提高PropertyChanged-當物業Description更改時,物業ShortDescription的事件。否則,UI現在有機會知道屬性ShortDescription已更改,並且應該更新綁定。

在代碼隱藏(在Silverlight客戶端項目),你可以做到這一點,像這樣:

public partial class AbroadTravel 
    // omitted your code 

    partial void OnDescriptionChanged(){ 
    RaisePropertyChanged("ShortDescription"); 
    } 
} 
+0

這解決了我的問題)。實際上,我的部分類是在服務器端,我將它移動到客戶端並添加OnDescriptionChanged,現在它工作:)非常感謝 –

相關問題