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层?

WPF:使用WCF将TextBox文本绑定到属性的子元素

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}"/>