C# 绑定到属性不会更新相关属性
我在服务器端有一个类C# 绑定到属性不会更新相关属性,c#,wpf,entity-framework,xaml,binding,C#,Wpf,Entity Framework,Xaml,Binding,我在服务器端有一个类Person,带有一些属性,其中一个是PhoneNumber(这是edmx自动生成的-来自数据库)。在UI中,我有两个文本框,一个是前缀,另一个是后缀,因此我想扩展Person类,并使用另外两个属性将其部分化,prefix和postfix并在UI中将它们绑定到此属性,该属性将更新PhoneNumber属性,但不知何故,prefix和postfix有值,但PhoneNumber没有值 这是我的密码: 服务器端: Public partial class Person : Ent
Person
,带有一些属性,其中一个是PhoneNumber
(这是edmx
自动生成的-来自数据库)。在UI
中,我有两个文本框
,一个是前缀
,另一个是后缀
,因此我想扩展Person
类,并使用另外两个属性将其部分化,prefix
和postfix
并在UI中将它们绑定到此属性,该属性将更新PhoneNumber
属性,但不知何故,prefix和postfix有值,但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; }
}
}
最终结果:
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; }
}
}
在我将值添加到那些文本框之后
我得到前缀和后缀中的值
,但是电话号码仍然是null
。调试模式下的打印屏幕:
我试图添加更新资源记录器
或实现INotifyPropertyChanged
但没有帮助,有人能帮我吗
提前谢谢 而不是PhoneNumber。子字符串(0,3)尝试以下操作:
PhoneNumber != null ? PhoneNumber.Substring(0, 3) : string.Empty;
或者手动询问(PhoneNumber!=null).您所说的PhoneNumber
为null且前缀
,后缀
得到值是什么意思?如果PhoneNumber
为空,则后缀和前缀将因空引用异常而崩溃,因为它们只是属性PhoneNumber的子字符串。@RohitVats我已添加了一个图像来回答您的问题。这也不会崩溃,可能setter和getter不工作?@Rohit Binding会捕获异常,如果您设置属性validate on exception,则绑定将在setter中验证TextBox on exception。从字面上讲,这种误解是不会被抛弃的scrope@Misha这部分代码在做什么:_PhoneNumber=StructuralObject.SetValidValue?可能您在那里返回null。@devhedgehog这是实体框架自动生成的,我刚刚复制了它。