0
我在服務器端類Person
與一些屬性,其中之一是PhoneNumber
(這是edmx
自動生成 - 從數據庫)。在UI
我有2 textboxes
,一個是prefix
,另一個是postfix
,所以我想擴展Person
類,並使其部分更多的2個屬性,prefix
和postfix
,並在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; }
}
}
客戶端:
DataContext
是Person
。
<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}" />
最終結果:
後,我添加值那些textboxes
我得到的值Prefix
和Postfix
但PhoneNumber
仍然null
。在調試模式下打印屏幕:
我已嘗試添加UpdateSourceTrigger
或實施INotifyPropertyChanged
並沒有幫助,有人可以幫我嗎?
在此先感謝!
你說的意思'PhoneNumber'爲空和'前綴','PostFix'獲得值?如果'PhoneNumber'爲空,postFix和前綴將會以空引用異常崩潰,因爲它們只是屬性PhoneNumber的子字符串。 –
@RohitVats我添加了一個圖像回答你的問題。這也不會崩潰,也許setter和getter不起作用? –
@Rohit綁定排序捕獲異常,如果您設置屬性驗證異常,Binding將驗證setter中異常的TextBox。這種感覺絕對不會被字面意義地拋出來。 –