簡體   English   中英

WPF 滾動自動調整大小面板

[英]WPF Scrolling AutoSizing Panel

我有一個 WPF 應用程序,其中主要的 window 擁有一個帶有兩個子項的 DockPanel。 頂部子項是另一個 DockPanel,它包含菜單並且具有固定大小。 下方的子項是主要工作區,它應填充剩余空間並可與 window 一起調整大小。(因此是 DockPanel 父項。)可拖動對象放置在該工作區中,並可能出現在其中的任何位置。

我試圖弄清楚如果將 object 拖到可見區域之外如何使滾動條出現。 當前的近似 XAML 結構
<Window> <DockPanel> <DockPanel with fixed-size content... > <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> <Grid ClipToBounds="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> </ScrollViewer> </DockPanel> </Window>

到目前為止,我已經嘗試過 Grid 和 Canvas。兩者都有內置滾動條,但除非指定尺寸,否則它們不會出現——但如果我應用尺寸,則面板不會自動調整大小以填充工作區域。 然后我嘗試用 ScrollViewer 包圍面板。 不受約束的面板現在可以成功地自動調整大小以填充空間,但是 ScrollViewer 與面板有同樣的問題——如果它被限制為硬尺寸,它只會顯示滾動條。

我在想,如果我可以動態約束 ScrollViewer,這會起作用。 到目前為止,我還沒有找到任何可靠的方法來動態地將大小值應用到 ScrollViewer。 有沒有辦法在 ScrollViewer 尺寸與網格的 ActualHeight 和 ActualWidth 之間創建綁定? 或者,有沒有一種方法可以將網格的 ActualHeight/ActualWidth 定義為可以應用於 ScrollViewer 的 DynamicResource? 或者是否可以使用其他一些面板、方法或資源來滿足所有三個條件(面板填充可用空間、面板自動調整大小為 window、任何拖到可見區域之外的內容都會觸發滾動條)? 在此先感謝您的幫助。

問題是我在包含 DockPanel 的底部子項上沒有 DockPanel.Dock 設置。 依靠 DockPanel 的 LastChildFill 不足以完成這項工作。 一旦我在底部的孩子上設置 DockPanel.Dock = Bottom ,滾動條就開始工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM