Guybrush Threepwood Geschrieben 18. Juni 2013 Teilen Geschrieben 18. Juni 2013 Ich habe ein UserControl mit einem Label das an eine DependencyProperty in der CodeBehind Datei gebunden ist <Label Content="{Binding Path=MyText}" Foreground="Black"/> [/PHP] [PHP]private static readonly DependencyProperty MyTextProperty = DependencyProperty.Register("MyText", typeof(string), typeof(MyUserControl), new FrameworkPropertyMetadata(new PropertyChangedCallback(MyTextPropertyChanged))); public string MyText { get { return (string)GetValue(MyTextProperty); } set { SetValue(MyTextProperty, value); } } private static void MyTextPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) { } public MyUserControl() { DataContext = this; InitializeComponent(); MyText = "Hallo"; } Binde ich das UserControl jetzt in einer anderen XAML View ein ohne das ich MyText setzte gibt das ganz normal Hallo aus. Binde ich aber MyText an einen Wert aus dem View Model gibt das plötzlich nichts mehr aus. <Label Content="{Binding Path=MyOriginalText}"/> <iv:MyUserControl MyText="{Binding Path=MyOriginalText}"/>[/PHP] Das erste Label gibt aber den richtigen Text aus, es ist also kein Problem des Bindings in der View sondern muss irgendwo an dem UserControl bzw. dem DependencyProperty liegen. Wenn ich einen Haltepunkt in die MyTextPropertyChanged Methode setzte dann hält der da zwei mal an. Beim ersten Mal mit dem alten Wert null und dem neuen Wert "Hallo" und beim zweiten Mal mit dem alten Wert "Hallo" und dem neuen Wert null:confused: Irgendwelche Ideen warum das nicht klappt? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 18. Juni 2013 Autor Teilen Geschrieben 18. Juni 2013 Ok habs selber gelöst. Ein Blick ins Output Fenster hat mir gezeigt das er durch das DataContext = this; bereits hier: <iv:MyUserControl MyText="{Binding Path=MyOriginalText}"/> MyOriginalText im UserControl selber gesucht hat und nicht mehr im DataContext der View die das einbindet. Ich hab das jetzt entfernt und im Binding innerhalb des UserControls noch RelativeSource={RelativeSource AncestorType={x:Type UserControl}} mit angegeben. Gefällt mir zwar nicht so gut aber die einzige Alternative die ich sehe wäre ein ViewModel für das UserControl zu erstellen was ich aber nicht möchte. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 18. Juni 2013 Teilen Geschrieben 18. Juni 2013 new FrameworkPropertyMetadata(default(string))) geht auch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.