7
votes

Exposer les propriétés de dépendance de contrôle des enfants pour la liaison dans WPF

J'ai un usercontrol Code> appelé CustomTextBox CODE> avec ce xaml: xxx pré>

maintenant lorsque j'utilise CustomTextBox code> et vouloir faire la liaison à innatextbox.text code>, il ne fonctionne pas: p>

... {Binding ElementName=CustomTextBox.InnerTextBox, Path=Text}


7 commentaires

Vous devez utiliser une nouvelle propriété de dépendance.


Merci. Y a-t-il une façon officielle de faire cela? J'ai lu un livre sur WPF 4 et je n'ai rien trouvé à ce sujet. Je n'ai pas trouvé de lignes directrices sur "Copier des propriétés" ou "Exposer les propriétés de dépendance" sur MSDN non plus.


1.Dans le code derrière votre contrôle crée un nouveau DP, disons que nous appelons le texte 2. Dans la XAML à partir de votre code: 3.Parrer que Le DataContext de la zone de texte est le USERCONTROL


Copiez-le pour noter le coussinet ou quelque chose que je ne peux pas poster msg ici, ne sais pas pourquoi


Je vois, merci. Seule la liaison doit être {Texte de liaison2} Je suppose.


Le «2» était pour la prochaine étape 1.2.3 ... mais bien sûr comme vous le voyez


@ZSH Vous pouvez écrire votre commentaire comme réponse et je l'accepterais.


3 Réponses :


0
votes

Regardez le texte de débogage dans la fenêtre de sortie de Visual Studio, il donnera un texte explicatif pour les erreurs de liaison de données.


2 commentaires

Dans mon projet, il dit: Erreur de chemin de liaison: «Texte 'Propriété non trouvée sur' Object '' '' CustomTextBox '(Nom =' CustomTextBox ')'. BindingExpression: chemin = texte; Dataitem = 'CustomTextBox' (Nom = 'CustomTextBox'); Elément cible est 'Textbox' (Nom = ''); La propriété cible est 'Text' (type 'String')


Il ne peut tout simplement pas parcourir "CustomTextBox.innertextbox.text" - il prend toujours "CustomTextBox.text" à la place.



0
votes

Vous pouvez faire un héritage. Vous ne créez pas correctement le contrôle personnalisé. Dans WPF Coustom Control il y a deux parties

  1. C # Partie-> Comportement du contrôle. Dans la partie C #, vous pouvez faire l'héritage
  2. XAML PARTIE-> UI ou apparence du contrôle

    Reportez-vous aux liens ci-dessous pour plus de Doitils

    http://msdn.microsoft.com/en-us/library/ cc295235.aspx

    http: //www.codeproject. COM / Article / 17830 / Création / Construction-A-Custom-WPF-Control

    http: //www.codeproject. com / articles / 49802 / Create-A-WPF-Custom-Control-Part-2

    http://wpffutorial.net/howtocreeacustomcontrol.html


2 commentaires

Les commandes avec XAML ne peuvent pas être héritées - il suffit de contrôler avec du code-derrière seulement, voir Stackoverflow.com/Questtions/269106/...


Dans mon projet, les contrôles de base et dérivés sont des contrôles personnalisés avec XAML et Code-derrière ...



3
votes

1.Dans le code derrière votre contrôle Créez un nouveau DP, disons que nous appelons le texte informatique. 2. Dans la XAML à partir de votre code: XXX


3. Faites certainement sûr que le DataContext de la zone de texte est le USERCONTROL


0 commentaires