Avatar billede skov_p Praktikant
01. maj 2007 - 20:53 Der er 8 kommentarer og
1 løsning

Databind til bool property i object

Hvis man har et object feks. Person

class Person{
private bool _gift;

public bool Gift{
  get{
    return _gift;
  }
}
}

I min GUI har jeg så en checkbox som skal databindes til mit Person object

Person _person = new Person();
checkbox.Databindings.Add("Checked", _person, "Gift");

Men der sker ikke noget når jeg ændre på min Gift property i mit peron object.

Men jeg har kun kunne bruge det i forbindelse med en liste af personer.

Jeg vil tro det har noget med Enumerator at gøre men hvad, og findes der en work-around.
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 08:23 #1
jeg har lavet eb lille test hvor jeg binder en checkbox til din klasse:

Person p = new Person();
checkBox1.DataBindings.Add("Checked", p, "Gift");

Person klasse med en lille ændring:
class Person
    {
        private bool _gift;

        public bool Gift
        {
            get
            {
                return true;
            }
        }
    }

På denne måde får jeg find sat hak i checkbox.
Du må regne med at din oprindelige klasse altid vil returnerer false.
Derfor vil checkbox aldrig blive checked.
Avatar billede skov_p Praktikant
03. maj 2007 - 09:02 #2
Ja, med true som retur værdi vil der blive sat hak i checkboksen
Men ideen er et controllen ændre status når min gift property ændrer sig.
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 09:36 #3
hvordan kan din gift property ændre sig ?
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 09:36 #4
som du har vist den der er den readonly
Avatar billede skov_p Praktikant
03. maj 2007 - 09:57 #5
Ja, det er måske lidt mis-visende men det var bare for at forklare problemstillingen vedr. databinding.
Der skal også være en "set" metode
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 10:08 #6
Opdateret klasse som virker:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace WindowsApplication1
{
    class Person : INotifyPropertyChanged {

        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnNotifyPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        private bool _gift;

        public bool Gift
        {
            get
            {
                return _gift;
            }
            set
            {
                _gift = value;
                OnNotifyPropertyChanged("Gift");

            }
        }
       
    }

}
Avatar billede dr_chaos Nybegynder
03. maj 2007 - 10:09 #7
testet med:
Person p = new Person();
            checkBox1.DataBindings.Add("Checked", p, "Gift").DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
           
           
            p.Gift = true;
Avatar billede skov_p Praktikant
27. januar 2008 - 00:46 #8
Hov. denne havde jeg glemt. Smid et svar.
Avatar billede dr_chaos Nybegynder
27. januar 2008 - 01:14 #9
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester