J'ai un contrôle Silverlight qui apparaît au-dessus d'un autre (image d'une fenêtre contextuelle). Dans ce contrôle pop-up, j'ai un scrollview (height = 250) avec un panneau de pile (nom de l'instance = spMain, orientation = vertical) à l'intérieur. Dans le contenu du panneau de la pile, plusieurs boîtes de texte sont empilées les unes sur les autres. Lorsque je tabulation de la zone de texte à la zone de texte, le scrollviewer se déplace automatiquement vers le bas (j'ai écrit du code dans un gestionnaire d'événements que toutes les zones de texte sont liées à cela).Erreur hors plage lors de la fermeture de la fenêtre contextuelle
Le problème que j'ai est quand je tente de fermer le contrôle pop-up, je reçois une erreur indiquant que la valeur ne tombe pas dans la fourchette attendue.
if (sender is TextBox)
{
TextBox tb = (TextBox)sender;
try
{
// Code bombs out here when I attempt to close out the pop-up control
Point pt = tb.TransformToVisual(spMain).Transform(new Point());
if (pt.Y >= scrollViewerHeight - tb.ActualHeight)
{
svMain.UpdateLayout();
svMain.ScrollToVerticalOffset(scrollViewerHeight += pt.Y);
}
}
catch (ArgumentException aex)
{
// Don't want to eat the exception
string errorMessage = aex.Message;
System.Diagnostics.Debug.WriteLine(errorMessage);
}
}
Je ne suis pas surpris, je reçois l'erreur, car il semble logique, mais ce que je suis à la recherche est une sorte d'événement Unloaded de contrôle de l'utilisateur ou empêcher le code incriminé d'exécuter.
Est-ce que quelqu'un a des idées sur la façon de s'y prendre?
Pourquoi le code ci-dessus se déclenche-t-il lorsque vous fermez le menu contextuel? – Bryant