2010-03-17 8 views
3

J'ai une classe 'MyTextBox' qui dérive de la zone de texte par défaut dans Silverlight. Cette classe ne contient actuellement aucun code supplémentaire.La liaison "Text-Property" d'une zone de texte dérivée vers une autre zone de texte ne fonctionne pas

J'ai mis en place une liaison dans xaml pour lier la Text-Property de MyTextbox à une autre Textbox pour refléter l'entrée faite dans la Textbox. L'effet est que MyTextBox ne met pas à jour et n'affiche pas le texte de l'autre Textbox.

J'ai ajouté une liaison égale pour une zone de texte normale. Et ça fonctionne.

Voici le code XAML pour les liaisons.

<UserControl x:Class="Silverlight.Sample.Dummy" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:my="clr-namespace:Sample" 
mc:Ignorable="d" 
d:DesignHeight="300" d:DesignWidth="400"> 

<StackPanel x:Name="LayoutRoot" Background="White"> 
    <TextBox Height="23" x:Name="textBox2" Width="120" /> 
    <TextBox Text="{Binding ElementName=textBox2, Path=Text, Mode=TwoWay}" Width="120" /> 
    <my:NumberTextBox Width="120" Text="{Binding ElementName=textBox2, Path=Text, Mode=OneWay}" /> 
</StackPanel> 

Y at-il quelque chose de spécial pour définir pour la liaison, quand je tire d'un contrôle. PS: J'ai essayé une liaison à un objet factice avec INotifyPropertyChanged et l'a définie en tant que DataContext pour les zones de texte existantes. Ce test fonctionne comme prévu et ma zone de texte dérivée est mise à jour.

Répondre

0

Enfin, je l'ai trouvé la raison, pourquoi il doesnt travail.

J'ai fait l'erreur, que j'ai ajouté un nouveau contrôle utilisateur Silverlight (MyTextBox) à mon projet et changé la classe de base de UserControl à TextBox (avec le fichier Xaml correspondant). Dans ce cas, la liaison ne fonctionne pas.

Après avoir ajouté une classe normale à mon projet et dérivé de TextBox, la liaison fonctionne sans aucun problème.

1

Jehof,

D'abord, utilisez TwoWay liaison sur la propriété de texte de votre dérivé mon: NumberTextBox.

Si cela ne résout pas le problème, continuer sur ...

Est-ce que ma: classe NumberTextBox Dérive en fait de TextBox? Si oui, il ne devrait pas y avoir autre chose que vous devez faire. Si vous construisez votre propre contrôle et que vous implémentez la propriété Text dans votre classe my: NumberTextBox, essayez d'en faire un DependencyProperty pour autoriser la liaison TwoWay. A titre d'exemple:

// The Text dependency property 
    #region The Text dependency property 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register("Text", typeof(string), typeof(NumberTextBox), 
     null); 

    public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 
    #endregion 

Bonne chance, Jim McCurdy Face à face Logiciel et YinYangMoney

+0

J'ai essayé la liaison TwoWay, avec le même effet. Le NumberTextBox dérive de TextBox. Actuellement, NumberTextBox ne contient aucun code supplémentaire. Je l'ai enlevé parce que je pensais, il casserait la liaison définie. – Jehof

Questions connexes