2014-01-10 24 views
0

我遇到問題,TreeView中的節點具有如此多的子節點,因此無法一次在屏幕上顯示所有子節點。在右側,我有一個整個樹視圖的滾動條。但是當我向下滾動時,它將樹形視圖移動到下一個節點 - 而不是子節點。這意味着可見區域以外的這些子節點永遠不會顯示。我想知道是否可以添加一個額外的滾動條,只能用於滾動節點的子節點。只有當一個節點有更多的子節點時纔會出現,而且可能一次顯示在屏幕上。僅適用於子節點的垂直滾動條

回答

2

這聽起來像你需要看看ScrollViewer.CanContentScroll Property。從鏈接頁面:

ScrollViewer中的內容可以根據物理單位或邏輯單位進行滾動。物理單位是與設備無關的像素。邏輯單位用於滾動ItemsControl中的項目。 ScrollViewer的默認行爲是使用物理單位來滾動其內容。但是,在CanContentScroll設置爲true的情況下,內容可以使用邏輯單位進行滾動。例如,ListBox,ListView和從ItemsControl繼承的其他控件使用邏輯單位進行滾動。如果CanContentScroll爲true,則ExtentHeight,ScrollableHeight,ViewportHeight和VerticalOffset屬性的值是項目的數量,而不是物理單位。

如果您需要物理滾動而不是邏輯滾動,請將主機面板元素包裝到ScrollViewer中,並將其CanContentScroll屬性設置爲false。物理滾動是大多數面板元素的默認滾動行爲。

因此,只需嘗試將ScrollViewer.CanContentScroll="False"添加到您的TreeView的聲明中即可。

+0

非常感謝,但沒有幫助。這是一個非常複雜的樹視圖 - 很多樣式,觸發器。在HierarchicalDataTemplate中也有很多標記代碼。 HierarchicalDataTemplate.ItemTemplate有一個由邊框包圍的網格。這是由另一個網格頂部包裹。我在說,因爲我創建的最簡單的treeview示例實際上按預期工作 - 滾動條滾動瀏覽樹的所有元素。這裏有阻止這種默認行爲的東西。 – user3046525

+0

@ user3046525,你必須認識到*你*是唯一可以修復你的代碼的人,因爲你是唯一擁有所有信息/代碼的人。我已經向你展示瞭如何改變'TreeView'上的滾動模式,除此之外我無能爲力。我所能建議的只是爲了試着簡單地將問題複製到一個新的WPF應用程序中,直到你有一個小的工作示例來演示你的問題(你可以在這裏發佈),或者你發現問題並且可以修復它在你自己的。祝你好運。 – Sheridan

+0

這就是我正在做的事情。我只是想感謝反饋。一旦我知道什麼是錯的,我會在這個線程中給出正確的答案。 – user3046525