Databinding Objektu na userControl   otázka

WPF

Dobrý den,

Měl bych dotaz ohledně DataBindingu ve WPF.

Mám objekt s Int32 proměnnou ID.

public class clsActor
   implements InotifiPropertyChanged

   public shared readonly IdProperty as string = "ID"
   private _id as integer
   public property ID as integer
      get
         return me._id
      end get
      set (value as integer)
         me._id = value
         raiseEvent NotifiPropertychanged(me, new propertyChangedEventArgs(clsActor.IdProperty)
      end set

end class

Protože ve WPF není NumericUpAndDown tak jsem si ho vytvořil. Má vlastnost Value typu Double.

Udělal jsem mu statickou hodnotu:

  Public Shared ReadOnly ValueDependencyProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(Double), GetType(NumericUpAndDown), New UIPropertyMetadata())

Ve formláři bych pak chtěl:


        Me.numId.DataContext = Me.CurrentActor
        Me.numId.SetBinding(NumericUpAndDown.ValueDependencyProperty, clsActor.IdProperty)

Toto ovšem nefunguje, a ani si nejsem jistý zdali to takhle má být.

Pro příklad pokud stejné zadání upravím na textbox:

Me.textbox1.DataContext = Me.CurrentActor
        Me.textbox1.SetBinding(TextBox.TextProperty, clsActor.IdProperty)

Tak to funguje, chyba bude někde v usercontrolu(NumericUpAndDown) asi v dependenci property.

Věděl by někdo jak to upravit, aby binding fungoval ?

vlastnost objektu Id je integer a Vlastnost userControlu value je double, ale pokud ji udělám také integer, tak to stejně nereaguje. A radši bych ji měl jako ve winforms double. Pro širší použití.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Na část problému jsem přišel.

V kontrolu musí být ještě binding Vlasnosti, kterou zvenčí měním na textbox kontrolu.

Takže pokud objekt bindovaný na komponentu změním změní se i textbox na usercontrolu, pokud ale v textboxu udělám změnu, neprovede se zpět na objekt. Vypadá to jako by byl mod přenosu jen jednosměrný, ale i po nastavení na twoway se objekt nemění.

Změním li hodnotu textboxu v usercontrolu tak se, vlastnost usercontrolu, která je bindovaná změní. Binding to nějak nezachytí a nepřenese ji na objekt v datacontextu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nestačil by hotový DoubleUpDown control? http://wpftoolkit.codeplex.com/

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback