Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Binding an Dependency Property von UserControl
MillionsterNutzer
myCSharp.de - Member



Dabei seit:
Beiträge: 238

Themenstarter:

Binding an Dependency Property von UserControl

beantworten | zitieren | melden

Hallo zusammen,

ich habe gerade ein UserControl erstellt welches es erlauben soll einen bestimmten Objekttyp anzuzeigen und zu editieren. Momentan sind das testhalber nur einige TextBoxen welche eben bestimmte Properties des zugewiesenen Objekts anzeigen.
Nun habe ich dem UserControl ein DependencyProperty ReadOnly hinzugefügt welches ich neben dem anzuzeigenden Objekt setzen will. Das funktioniert soweit auch, allerdings frage ich mich nun wie ich das ReadOnly meines UserControls an die ReadOnly Properties der enthaltenen Textboxen weiterleiten kann.

Kann mich da jemand bitte eben in die richtige Richtung leiten? Irgendwie habe ich beim googlen bei diesem Thema kein Glück (bzw. die falschen Suchbegriffe).

VG

Ralf
private Nachricht | Beiträge des Benutzers
Robin0
myCSharp.de - Member



Dabei seit:
Beiträge: 213

beantworten | zitieren | melden

Entweder machst dus im XML
dh du gehst in dein UControl und schreibst oben in die UControl definition hier->
<UserControl ReadOnly={Binding ReadOnly} >...</UserControl>
Wenn du ein ViewModel hast kannst du über den Ancestor auf das Usercontrol binden
Hier bin ich mir nicht sicher ob da ein namenskonflikt bei gleicher benennung entsteht zwischen dem MISL code und deinem c# Code
<UserControl
ReadOnly="{RelativeSource AncestorType={x:Type UserControl} Path=ReadOnly}">...</UserControl>


Oder du machst es im code

 
        public Boolean ReadOnly
        {
            get { return (Boolean)GetValue(ReadOnlyProperty); }
            set { SetValue(ReadOnlyProperty, value); }
        }

        public static readonly DependencyProperty ReadOnlyProperty =
            DependencyProperty.Register("ReadOnly", typeof(Boolean), typeof(MyUserControl), new PropertyMetadata(default(Boolean), OnReadOnlyChanged));

        private static void OnReadOnlyChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
        {
            ((MyUserControl)o).OnReadOnlyChanged((Boolean)e.OldValue, (Boolean)e.NewValue);
        }

        private void OnReadOnlyChanged(Boolean oldValue, Boolean newValue)
        {
this.Readonly = newValue;
        }
private Nachricht | Beiträge des Benutzers
MillionsterNutzer
myCSharp.de - Member



Dabei seit:
Beiträge: 238

Themenstarter:

beantworten | zitieren | melden

Hi Robin0,

habs mit deinem Hinweis hinbekommen:
IsReadOnly="{Binding Path=ReadOnly, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"

Vielen Dank für die Hilfe!!!

Ralf
private Nachricht | Beiträge des Benutzers