我正在使用WPF應用程序,並使用scrollViewer查看屏幕區域不受限制的內容。工作正常,沒有問題。WPF中的ScrollViewer出現問題
但是,如果我的窗口包含一個列表框或網格或類似的東西,並且該控件有很多記錄,那麼不是向它自己添加一個滾動條,而只是增加控件和窗口本身的高度,因爲scrollviewer認爲它需要擴展。
我不想硬編碼列表框的高度,因爲這使得它在不同的分辨率下是相同的,我想讓它增加高度,但並不總是像scrollviewer這樣做。
由於
我正在使用WPF應用程序,並使用scrollViewer查看屏幕區域不受限制的內容。工作正常,沒有問題。WPF中的ScrollViewer出現問題
但是,如果我的窗口包含一個列表框或網格或類似的東西,並且該控件有很多記錄,那麼不是向它自己添加一個滾動條,而只是增加控件和窗口本身的高度,因爲scrollviewer認爲它需要擴展。
我不想硬編碼列表框的高度,因爲這使得它在不同的分辨率下是相同的,我想讓它增加高度,但並不總是像scrollviewer這樣做。
由於
不能包括ScrollViewer
內可變的高度/寬度對象而不設置觀看者的高度/寬度。
滾動查看器有效地具有無限高度,因此網格擴展填充「可用」空間 - 因此您看到的效果。正如@JoeWhite在他的評論中所說,ScrollViewer
是一個容器,它可以像保存所有內容一樣高。錨定不會起作用 - 實際上,你的錨點已經被錨定,它只是固定在一些說「哦,我會成爲你需要的任何大小」的東西。
您需要限制高度,將ListBox
移動到ScrollViewer
之外或使用ScrollViewer
以外的其他東西。
再次引用@Joe「這是在另一個滾動區域內放置滾動區域的危險 - 它的可用性差,很難定義行爲。」
可以將ScrollViewer包裝到網格中,並將scrollviewer的寬度和高度屬性綁定到網格的ActualWidth和ActualHeight。因此,scrollviewer的固定大小等於窗口大小時將改變的大小。
例子:
<Grid x:Name="LayoutRoot" Background="White">
<Grid Background="#FFF1F1F1" Height="49" VerticalAlignment="Top">
<Button Content="Обзор" Margin="0,13,175.25,0" VerticalAlignment="Top" FontSize="14.667" HorizontalAlignment="Right" Width="95.147">
</Button>
<Label Content="{Binding DocPath, Converter={StaticResource FileNameConverter}, FallbackValue=Выберите файл, TargetNullValue=Выберите файл}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="342.603" Margin="10,10,0,0" Height="33"/>
<Button Content="Загрузить данные" HorizontalAlignment="Right" Margin="0,13,10,0" VerticalAlignment="Top" Width="151.147" FontSize="14.667">
</Button>
</Grid>
<Grid x:Name="scrollBorder" Margin="10,54,10,10">
<ScrollViewer x:Name="LogScroller" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
HorizontalAlignment="Left" VerticalAlignment="Top"
Height="{Binding ActualHeight, ElementName=scrollBorder}" Width="{Binding ActualWidth, ElementName=scrollBorder}" >
<ItemsControl ItemsSource="{Binding Log}" />
</ScrollViewer>
</Grid>
</Grid>
謝謝,做我們喜歡在WPF的窗口形式錨固性什麼嗎? –
@MSingh,你把它放在ScrollViewer裏面。 ScrollViewer是一個容器,它可以像保存所有內容一樣高。錨定不會有幫助 - 實際上,您的ListBox已經*被錨定,它只是錨定在某些說「哦,我會是你需要我的任何大小」的東西。這是在另一個滾動區域內放置滾動區域的危險 - 可用性差,很難定義行爲。 –
每次我必須處理ScrollViewer時,我知道這將是糟糕的一天。 :) – MetalMikester