我在服务器端类Person
上有一些属性,其中一个是PhoneNumber
(这是edmx
自动生成的 - 来自DB)。在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
但没有任何帮助,有人可以帮助我吗?
提前致谢!
答案 0 :(得分:0)
而不是PhoneNumber.Substring(0,3)尝试这个:
PhoneNumber != null ? PhoneNumber.Substring(0, 3) : string.Empty;
或者手动询问(PhoneNumber!= null)...