2011-11-01 66 views
1

我有一個動態創建表單的Silverlight應用程序。在這個表單中,我有我的應用程序工作,以便標籤焦點按照表單的順序。 我的問題是,窗體是相當大的(在屏幕視圖下方),當我選擇較低的項目屏幕不會調整,因此我需要向下滾動頁面到我的標籤焦點所在的位置。Silverlight表視圖問題

是否有人知道如何設置窗體,以便具有焦點的項目始終位於屏幕的中心。

謝謝

回答

0

有沒有簡單或AutoMagical的方式來做到這一點。由於您似乎是自己動態創建控件,因此您可以將事件處理程序附加到每個相關控件的事件GotFocus事件中。

您提到的「向下滾動頁面」可能表明您正在將這些控件放置在ScrollViewer控件中(如果不更改您的代碼,則是)。

您的控件將被放置在Panel這是ScrollViewer的子項。

因此,GotFocus事件處理程序的任務是發現控件相對於面板的垂直位置,然後使用其他一些計算器調用方法。

private void FormControl_GotFocus(object sender, RoutedEventArgs e) 
{ 
    FrameworkElement fe = (FrameworkElement)sender; 
    GeneralTranform transform = fe.Transform(myContainingPanel); 
    Point topLeft = transform.Transform(new Point(0, 0)); 
    myScrollViewer.ScrollToVerticalOffset(topLeft.Y - (myScrollViewer.ViewportHeight/2) + (fe.ActualHeight/2)); 
}