У меня есть элемент управления Silverlight, который появляется поверх другого (снимите всплывающее окно). В этом всплывающем контроле у меня есть scrollview (высота = 250) с панелью стека (имя экземпляра = spMain, ориентация = вертикально) внутри. Внутри содержимого панели стека расположено несколько текстовых полей, расположенных друг над другом. Когда я перехожу из текстового поля в текстовое поле, scrollviewer автоматически перемещается в нижнюю часть (я написал код в обработчике событий, с которым связаны все текстовые поля).Ошибка вне диапазона при закрытии всплывающего окна
Проблема, с которой я столкнулась, заключается в попытке закрыть всплывающее управление, я получаю сообщение об ошибке, указывающее, что значение не входит в ожидаемый диапазон.
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);
}
}
Я не удивлен, потому что кажется, имеет смысл, я получаю ошибку,, но то, что я ищу своего рода управления пользователя выгружен события или предотвратить вредоносный код, от выполнения.
Есть ли у кого-нибудь идеи о том, как это сделать?
Почему приведенный выше код срабатывает при закрытии всплывающего окна? – Bryant