2
嘿傢伙, 我有一個silverlight導航應用程序,在我的一個頁面中,我有一個表格由最終用戶填寫,其中有幾個TextBoxes要填充,問題是,當我按TAB鍵移動到下一個文本框時,光標會按順序移動到下一個文本框,但頁面不會向下滾動到新的文本框,所以即使光標位於此處也不能看到文本框。 ...有沒有人知道這個解決方案? 我感謝任何幫助。Silverlight 4頁滾動TAB命中
謝謝 卜拉欣
嘿傢伙, 我有一個silverlight導航應用程序,在我的一個頁面中,我有一個表格由最終用戶填寫,其中有幾個TextBoxes要填充,問題是,當我按TAB鍵移動到下一個文本框時,光標會按順序移動到下一個文本框,但頁面不會向下滾動到新的文本框,所以即使光標位於此處也不能看到文本框。 ...有沒有人知道這個解決方案? 我感謝任何幫助。Silverlight 4頁滾動TAB命中
謝謝 卜拉欣
這裏的測試XAML:
<ScrollViewer x:Name="scrollViewer">
<StackPanel x:Name="stackPanel"
Orientation="Vertical">
<TextBox Width="100"
Text="#1"
GotFocus="TextBox_GotFocus" />
<Rectangle Fill="AliceBlue"
Width="100"
Height="400" />
<TextBox Width="100"
Text="#2"
GotFocus="TextBox_GotFocus" />
<Rectangle Fill="AliceBlue"
Width="100"
Height="400" />
<TextBox Width="100"
Text="#3"
GotFocus="TextBox_GotFocus" />
</StackPanel>
</ScrollViewer>
代碼爲 'TextBox_GotFocus' 事件:
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
GeneralTransform gt = ((TextBox)sender).TransformToVisual(this);
Point textBoxPositionRelativeToControl = gt.Transform(new Point(0, 0));
if (textBoxPositionRelativeToControl.Y > this.ActualHeight
|| textBoxPositionRelativeToControl.Y < this.ActualHeight)
{
gt = ((TextBox)sender).TransformToVisual(stackPanel);
Point textBoxPositionRelativeToStackPanel = gt.Transform(new Point(0, 0));
scrollViewer.ScrollToVerticalOffset(textBoxPositionRelativeToStackPanel.Y - this.ActualHeight/2);
}
}
更新的代碼,這樣如果文本框是外可見區域然後滾動查看器將隱藏文本框居中;否則,沒有任何反應。如果您選擇下一個或上一個文本框(shift +選項卡),則工作。
這將只在頁面上的silverlight區域完全可見時才起作用,否則您將不得不滾動網頁以及... – 2011-03-03 19:42:34
是的,在他的情況下,SL區域在頁面上完全可見,I認爲。 – 2011-03-03 19:48:05
使用這種方法是非常好的主意。但是,當我用鼠標點擊控件時,網頁會滾動。它不應該是這樣。你能否幫我改變一下代碼,這樣當控件不可見時,網頁只會滾動。 – 2011-03-04 09:54:38