Binden an DependencyProperty
-
Hallo
Ich habe ein Usercontrol. Dieses Usercontrol hat als Datencontext ein ViewModel.
Das UserControl hat nun aber noch zusätöich ein DependencyProperty. Wie binde ich den nun ein Element auf das DependencyProperty.
-
Ich bin jetzt nicht unbedingt der fitteste was Xaml angeht, und weiß auch nicht ob ich dich verstehe. Aber ein Dependency Property sollte ja auch einen C#-Property-Wrapper haben, in etwa:
public class MyUserControl : /*...*/ { //... public static readonly DependencyProperty XyzProperty = DependencyProperty.Register//... public string Xyz { get { return (string)GetValue(XyzProperty); } set { SetValue(XyzProperty, value); } } //... }
Und über diese Properties sollte auch das Databinding normal definiert werden können.
<!-- ... --> <my:MyUserControl Xyz="bla"/> <!-- ... --> <my:MyUserControl Xyz="{Binding Path=IrgendeineDCEigenschaft}"/> <!-- ... -->
-
Kann ich sa machen. Aber nur wenn der Datencontext die Klasse selber ist. Aber ist Sie ja nicht. Habe ich ja gesagt. Datencontext ist ein zugehörendes ViewModel.
-
UmDieEcke schrieb:
Kann ich sa machen. Aber nur wenn der Datencontext die Klasse selber ist. Aber ist Sie ja nicht. Habe ich ja gesagt. Datencontext ist ein zugehörendes ViewModel.
Dann werde mal konkreter was für ein Element du binden willst, da man im Databinding ja auch ein Element zusätzlich benennen kann.
<TextBox x:Name="textbox1" /> <my:MyUserControl Xyz="{Binding ElementName=textbox1 Path=Text}"/>
-
Ja kann man aber nicht wenn das ganze usercontrol nen anderen Datencontext hat.
<Usercontrol x:Class="MyView" Datacontext="{Binding MyViwModel}"> <Combobox IsEnabled="{Biding SelectionEnabled}" /> </Usercontrol>
SelectionEnabled ist das DP Property im der Klasse MyView
-
Hast du das mal ausprobiert einen Namen für das UserControl zu setzen und dann das Binding per ElementName zu machen? Bei mir funktioniert es, aber vielleicht ist mein Fall auch nicht genau der selbe.
-
Perfekt. Hatte es nut mit FindAncestor gelöst. Aber das ist die schönere Lösung. Danke