2011-05-12 60 views

回答

0

我不確定它是否沒有重新定義模板。我能夠讓滾動條出現(通過直接訪問它),但不能實際滾動。我最後在類似的帖子中添加了一個虛擬行,並在沒有行時將行高設置爲0。這是醜陋的,但它的工作原理。

if (dtEnrollments.Rows.Count == 0) 
{ 
    dtEnrollments.Rows.Add(dtEnrollments.NewRow()); 
    dgClassRoster.RowHeight = 0; 
} 
else 
    dgRoster.RowHeight = defaultRowHeight; 

dgRoster.ItemsSource = dtEnrollments.DefaultView; 
0

您可以嘗試強制使用水平滾動條ScrollViewer.HorizontalScrollBarVisibility="Visible",或者如果失敗,您可以禁用DataGrid內的滾動並將其包裝到ScrollViewer中。

+0

'ScrollViewer.Horizo​​ntalScrollBarVisibility =「Visible」'這不起作用,除非你有行。我無法使用ScrollViewer,因爲它會導致性能下降。 – 2011-05-12 09:38:34

0

嘗試來包裝你DataGridScrollViewer,與HorizontalScrollBarVisibility被迫Visible,和下面的屬性添加到DataGrid

<DataGrid.Template> 
    <ControlTemplate>       
     <ItemsPresenter /> 
    </ControlTemplate> 

</DataGrid.Template> 

應該做的伎倆

+0

我無法使用ScrollViewer,因爲它會導致性能下降 – 2011-05-12 09:44:23

+0

Ouch。我建議的唯一(痛苦的)出路是完全重新模板DataGrid,因爲默認的樣式有一個ScrollViewer嵌入 – Damascus 2011-05-12 09:46:58

+0

與DataGrid的ScrollViewer包裝器相比,默認的性能命中是沒有什麼。嘗試一下自己。在大量行的情況下,ScrollViewer中的DataGrid和沒有它的DataGrid之間會有巨大的性能差異 – 2011-05-12 09:51:29

0

你可以嘗試結合MaxWidthDataGridActualWidth的父元素(Control/Window/Grid /等)。

+0

問題是父控件(即Grid)覆蓋了整個屏幕,但DataGrid大於此值。它不能包含在它的父代中。它必須有水平滾動完全顯示自己 – 2011-05-12 18:39:42

+0

我相信,如果你在DataGrid上設置MaxWidth它應該自動滾動。您可以通過將其設置爲某個值來對其進行測試。 – 2011-05-12 20:17:39

+0

這隻適用於DataGrid中有行的情況 – 2011-05-13 06:01:05