WPF:使用WCF将TextBox文本绑定到属性的子元素
本文关键字:属性 元素 绑定 文本 使用 WCF TextBox WPF | 更新日期: 2023-09-27 18:29:28
我有一个TextBox,我正试图将其绑定到表属性的元素"regimeAlias"是tbRegimes
表的一列,我已使用实体框架:映射该表
<TextBox Text="{Binding NewRegime.regimeAlias, Mode=TwoWay}"/>
在我的ViewModel中公开的属性:
private tbRegime _NewRegime;
public tbRegime NewRegime
{
get { return _NewRegime; }
set
{
_NewRegime = value;
OnPropertyChanged("NewRegime");
}
}
最后,这里是WCF服务引用自动生成的代码类:
public partial class tbRegime : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
//blah blah blah
[System.Runtime.Serialization.DataMemberAttribute()]
public string regimeAlias {
get {
return this.regimeAliasField;
}
set {
if ((object.ReferenceEquals(this.regimeAliasField, value) != true)) {
this.regimeAliasField = value;
this.RaisePropertyChanged("regimeAlias");
}
}
}
二传手永远不会被击中。这是因为NewRegime
对象中的每个元素都需要引发PropertyChanged
吗?如果是,是否有一个简单的解决方法,而无需在我的代码中添加更多的DTO层?
Edit3:使用注册别名代码中的帖子。我不得不说你的装订应该行得通。当然,如果你想调试,你必须在注册表中设置断点Alias setter
<TextBox Text="{Binding NewRegime.regimeAlias, Mode=TwoWay}"/>
这段代码意味着,您绑定到类tbRegime中的公共属性注册表Alias。你的新政权的设定者永远不会命中,因为你不绑定它。
因此,请检查您的tbRegulation类属性setter的regimeAlias。
编辑:TextBox的DataContext当然是一个具有公共属性NewRegulation的对象,但正如我所说,如果你在绑定中使用点符号,最后一个属性就是你绑定到的属性:)
EDIT:你没有太多的方法来解决问题:)如果你像以前那样让绑定,你需要一个具有公共属性regimeAlias的模型,它应该实现INotifyPropertyChanged。
如果你想包装regimeAlias属性,那么你就有问题了——你必须在正确的点上引发OnPropertyChanged("MyRegiolias")。
public string MyRegimeAlias
{
get { return _NewRegime.regimeAlias; }
set
{
_NewRegime.regimeAlias = value;
OnPropertyChanged("MyRegimeAlias");
}
}
xaml
<TextBox Text="{Binding MyRegimeAlias, Mode=TwoWay}"/>