c #WindowsForms数据绑定不会更新所有字段

时间:2017-07-24 11:16:09

标签: c# winforms data-binding

有一个Windows窗体应用程序,其中包含应由databindng更新的多个字段。 所有字段都将包含在' this'部分和全部将显示在附加的标签中,但不会显示在[BaustelleName]。

PropertyChanged?.Invoke(this, e); ScreenShoot one

使用的来源是:

    public string BaustelleName
    {
        get { return string.IsNullOrEmpty(this.sName) ? null : sName; }
        set
        {
            sName = value;
            InvokePropertyChanged(new PropertyChangedEventArgs("BaustelleName"));
        }
    }

    public string BaustelleZusatz
    {
        get { return string.IsNullOrEmpty(this.sZusatz) ? null : sZusatz; }
        set
        {
            sZusatz = value;
            InvokePropertyChanged(new PropertyChangedEventArgs("BaustelleZusatz"));
        }
    }

...

    protected void BindControls()
    {
        try
        {
            Binding bnd = null;
            cBindung bnd_Helper = new cBindung();

            // txt_Baustelle ----------------------------------------------------------------------------
            parent.txt_Baustelle.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleNr", true, DataSourceUpdateMode.OnPropertyChanged);
            parent.txt_Baustelle.DataBindings.Add(bnd);

            //lbl_AdrBaustelle_Zl1.Text = adr.VornameName; ----------------------------------------------
            parent.lbl_AdrBaustelle_Zl1.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleName");
            parent.lbl_AdrKunde_Zl1.DataBindings.Add(bnd);

            //lbl_AdrBaustelle_Zl2.Text = adr.Zusatz; ---------------------------------------------------
            parent.lbl_AdrBaustelle_Zl2.DataBindings.Clear();
            bnd = new Binding("Text", this, "BaustelleZusatz");
            parent.lbl_AdrBaustelle_Zl2.DataBindings.Add(bnd);     //Zusatz

...

    public void InvokePropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChanged?.Invoke(this, e);
    }

......与其他领域相同。 我发现调用了[BaustelleName] nevver的getter,而每次调用[InvokePropertyChanged]时都会调用所有其他函数。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

您将绑定添加到错误的标签:您将其添加到lbl_ArdKunde而不是lbl_AdrBaustelle

//lbl_AdrBaustelle_Zl1.Text = adr.VornameName; ---------------------------------------
    parent.lbl_AdrBaustelle_Zl1.DataBindings.Clear();
    bnd = new Binding("Text", this, "BaustelleName");
    parent.lbl_AdrKunde_Zl1.DataBindings.Add(bnd);