2014-02-15 140 views
0

我在服務器端類Person與一些屬性,其中之一是PhoneNumber(這是edmx自動生成 - 從數據庫)。在UI我有2 textboxes,一個是prefix,另一個是postfix,所以我想擴展Person類,並使其部分更多的2個屬性,prefixpostfix,並在UI綁定到這將更新PhoneNumber屬性,但不知何故,前綴和後綴有價值,但PhoneNumber不。綁定到屬性不會更新相關屬性

這裏是我的代碼:

服務器端:

Public partial class Person : EntityObject 
{ 
    //Auto generated from edmx 
    ... 
    ... 
    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=true)] 
    [DataMemberAttribute()] 
    public global::System.String PhoneNumber 
    { 
     get 
     { 
      return _PhoneNumber; 
     } 
     set 
     { 
      OnPhoneNumberChanging(value); 
      ReportPropertyChanging("PhoneNumber"); 
      _PhoneNumber = StructuralObject.SetValidValue(value, true, "PhoneNumber"); 
      ReportPropertyChanged("PhoneNumber"); 
      OnPhoneNumberChanged(); 
     } 
    } 
} 

public partial class Person 
{ 
    [DataMember] 
    public string PhoneNumberPrefix 
    { 
     get { return PhoneNumber.Substring(0, 3); } 
     set { PhoneNumber = value + PhoneNumber.Substring(3); } 
    } 

    [DataMember] 
    public string PhoneNumberPostfix 
    { 
     get { return PhoneNumber.Substring(3); } 
     set { PhoneNumber = PhoneNumber.Substring(0, 3) + value; } 
    } 
} 

客戶端:

DataContextPerson

<TextBox Grid.Column="0" MaxLength="3" 
         Text="{Binding PhoneNumberPrefix, Mode=TwoWay}" /> 
<TextBlock Grid.Column="1" Text="-" /> 
<TextBox Grid.Column="2" 
     Text="{Binding PhoneNumberPostfix, Mode=TwoWay}" /> 

enter image description here

最終結果:

後,我添加值那些textboxes我得到的值PrefixPostfixPhoneNumber仍然null。在調試模式下打印屏幕:

enter image description here

我已嘗試添加UpdateSourceTrigger或實施INotifyPropertyChanged並沒有幫助,有人可以幫我嗎?

在此先感謝!

+0

你說的意思'PhoneNumber'爲空和'前綴','PostFix'獲得值?如果'PhoneNumber'爲空,postFix和前綴將會以空引用異常崩潰,因爲它們只是屬性PhoneNumber的子字符串。 –

+0

@RohitVats我添加了一個圖像回答你的問題。這也不會崩潰,也許setter和getter不起作用? –

+0

@Rohit綁定排序捕獲異常,如果您設置屬性驗證異常,Binding將驗證setter中異常的TextBox。這種感覺絕對不會被字面意義地拋出來。 –

回答

0

相反PhoneNumber.Substring的(0,3)嘗試這個辦法:

PhoneNumber != null ? PhoneNumber.Substring(0, 3) : string.Empty; 

或手動問(******中國!= NULL)...