L'accès contrôles XAML à partir de C# code-behind
J'ai deux fichiers dans mon VS projet: Custom.xaml
et Custom.cs
Dans mon XAML fichier, j'ai les zones de texte suivantes:
<TextBox x:Name="TextBox1" Text="{Binding Value, Mode=TwoWay}" Foreground="Black" Background="Green" SelectionChanged="TextBox1_SelectionChanged" />
<TextBox x:Name="TextBox2" Text="{Binding Value, Mode=TwoWay}" Foreground="Black" Background="Green" SelectionChanged="TextBox2_SelectionChanged" />
Dans mon .cs, j'ai la méthode suivante:
void TextBox1_SelectionChanged(object sender, RoutedEventArgs e)
{
TextBox t = e.Source as TextBox
}
Je peux réussir à frapper le gestionnaire d'événement ci-dessus. Ensuite, je peux récupérer TextBox1
et ses propriétés en utilisant e.Source
, mais je voudrais accès TextBox2 et ses propriétés.
Au passage, le .cs fichier est juste un C#
classe que je suis référencement, pas un xaml.cs. En outre, je comprends que j'ai pu mettre en œuvre ce par le biais d'un UserControl, mais ne peut le faire que dans ce scénario, pour des raisons qui sont hors de la portée de ce post.
Merci de m'indiquer comment obtenir/définir les propriétés de l' TextBox2
.
Grâce.
EDIT: Aucune autre entrée sur cela? Comme solution de contournement, j'ai ajouté un gestionnaire d'événement appelé TextBox2_Loaded, puis ensemble e.Source à une variable d'instance. Puis, dans TextBox1_SelectionChanged, je peux accéder à la variable d'instance. Voudrais vraiment juste cibler le contrôle directement (ex. TextBox2.IsEnabled). Je dois manquer une déclaration ou d'un héritage, quelque part. Ne pouvez même pas trouver le contrôle à l'aide FindName.
- sont u à l'aide de la textbox2 comme un élément d'un contrôle répétitif (un gridview, listview, etc...)?
- Non, je ne suis pas à l'aide d'un gridview ou listview
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que vous avez défini un namein le XAML, vous pouvez y accéder directement par un nom (Le XAML compilateur va créer une variable d'instance pour vous.)
Bon, j'avait apparemment laissé de côté un élément essentiel dans ce post... Mon contrôles de zone de texte sont à l'intérieur de DataTemplate contrôles. D'après mes recherches, les contrôles de zone de texte n'est pas accessible lorsque l'intérieur de DataTemplate contrôles. Je ne pensais vraiment pas qui aurait de l'importance, mais je suppose que les variables d'instance sont pas créés lors de ce scénario existe.
Si je l'ai interprété de cette manière incorrecte, veuillez fournir des commentaires. Pour l'instant, je suis allé de l'avant et a ajouté un événement Chargé et défini mon contrôles de zone de texte en tant que variables d'instance afin que je puisse y accéder et de modifier des propriétés lorsque d'autres activités se produire.
Merci pour tous les commentaires.
Ce qui s'est passé pour moi. J'ai dû fermer ma solution et de le rouvrir.