我的WPF應用程序的結構內部的ScrollViewer是這樣的:使用另一張的ScrollViewer
<Scrollviewer>
<Grid>
<Scrollviewer>
<DataGrid>
我的目標是,如果DataGrid超過屏幕的高度,用它自己的ScrollViewer。在這一刻,只有外部ScrollViewer被使用,所以我必須滾動整個網格。
有人可以告訴我如何做到這一點?
我的WPF應用程序的結構內部的ScrollViewer是這樣的:使用另一張的ScrollViewer
<Scrollviewer>
<Grid>
<Scrollviewer>
<DataGrid>
我的目標是,如果DataGrid超過屏幕的高度,用它自己的ScrollViewer。在這一刻,只有外部ScrollViewer被使用,所以我必須滾動整個網格。
有人可以告訴我如何做到這一點?
您需要在內部ScrollViewer上設置一個高度,否則它會根據其內容的大小盡可能地擴展。
<Window x:Name="RootWindow">
<ScrollViewer>
<Grid Height="{Binding ElementName=RootWindow, Path=ActualHeight}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="2*" />
</Grid.RowDefinitions>
<ScrollViewer Grid.Row="1">
<DataGrid />
</ScrollViewer>
</Grid>
</ScrollViewer>
</Window>
而且,DataGrid中已經內置了它自己的滾動條,您可以使用,而不是在ScrollViewer中包裝DataGrid的屬性。這將滾動數據並始終保持標題可見,而不是滾動整個數據網格。
<DataGrid HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto" />
然後,您可能希望將DataGrid放置在滾動查看器之外。因此,您可以設置兩個Grid.Rows,並讓它爲您分配可用大小(默認值爲「相等」,或者只使用兩行,即50%-50%)。因此,如果DataGrid超出其可用大小,它將使用自己的ScrollViewer。如果下面的內容超過了大小,它將使用您手動放置的ScrollViewer。至少,這是我如何根據你的初始意見來解決它的。隨意添加代碼/評論,以便我們可以找到更好的方法。
如果您將兩個ScrollViewer加上一個數據網格放在一起,您將被迫開始傳遞具體的高度或寬度值,如果你想要這種細粒度的控制。
但我不知道DataGrid的高度,也不知道可用的屏幕高度(分辨率等)。那麼我怎樣才能做到這一點,沒有固定的大小。 – TheJoeIaut
@Joelaut看我的編輯。您可以綁定到窗口大小,或者您可以設置網格的RowDefinitions以獲取相對大小。 – Rachel