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。这种感觉绝对不会被字面意义地抛出来。 –