1
我有一個有很多列的網格,所以有一個大的水平滾動。另外我有服務器分頁,所以我只顯示前100行。爲了加載更多的行,我在網格中顯示一個按鈕「Load next 100 rows」。問題是,按鈕可能會變得不可見,因爲它會滾動出視圖。這不好。我想將其水平位置固定在scrollviewer視圖端口的中心。有什麼建議麼?「Pin」ScrollViewer內的按鈕
你看,那水平滾動是相當大的,而當用戶使用它,按鈕可能變得不可見。我在網格的最後一行顯示按鈕,所以當您向下滾動時,只有在完成時纔會看到按鈕。
其實我已經實現了我想要的東西,但是很髒的伎倆。我聽ScrollViewer.ScrollChanged,並在更新按鈕的邊緣。
private void RulesXamDataGrid_OnScrollChanged(object sender, ScrollChangedEventArgs e)
{
var grid = (XamDataGrid)sender;
var scroll = grid.FindDescendant<ScrollViewer>();
var loadMoreButton = grid.FindElement<Button>(x => x.Name == "loadMoreButton").FirstOrDefault();
if (scroll != null && loadMoreButton != null)
loadMoreButton.Margin =
new Thickness(scroll.HorizontalOffset + (scroll.ViewportWidth - loadMoreButton.ActualWidth)/2, loadMoreButton.Margin.Top, loadMoreButton.Margin.Right, loadMoreButton.Margin.Bottom);
}
我不喜歡這個實現,所以如果你有更好的(MVVM方式),它會很棒。
你能告訴我們現在的樣子嗎?當你說你想在視口中心的按鈕,你的意思是你希望它覆蓋在行的頂部?這似乎是一個奇怪的地方,把它。 – 2014-11-21 15:17:55