我有一個樹視圖,其中每個樹視圖項都包含一個信號和一個信號名。有沒有辦法將scrollviewer應用於樹視圖項目的一部分?
我想在樹形視圖內展開一個名稱面板,但我希望滾動查看器只能在包含treeviewitem信號的面板的右側部分滾動。
是創建自定義treeview類的唯一答案嗎?我最初的想法是將兩個樣式模板應用於每個樹視圖,以便展開器按鈕位於一個樹視圖中,並且只擴展一個結果而擴展另一個樹視圖。但最終我無法找出一種方法來使用觸發器鏈接兩個樹視圖中的項目,以便當一個項目展開時,其對應項展開。
我也玩過使用controltemplate來定製它,但我覺得scrollviewer只需要放置在treeviewitem的一部分,但是在treeview控件內部沒有辦法將項目拆分到itemspresenter模板。
是我最好的選擇,只是創建一個自定義treeview?
編輯:
創建一個ItemTemplate像建議將創建一個單獨的ScrollViewer每個項目的一部分,所以我最終會與6個個小scrollviewers。但我想要做的是將滾動查看器應用於所有項目的右列。但是,要將scrollviewer應用於所有項目,我想我需要將它放在treeview控件模板中。但是在treeview控件模板中,您只能訪問itemspresenter:
<ControlTemplate TargetType="TreeView">
<ScrollViewer
Focusable="False"
CanContentScroll="False"
Padding="4">
<StackPanel>
<wpfExp:SignalGraphAxis
PenColor="{Binding ElementName=GraphColorPicker, Path=SelectedColor, Mode=OneWay}"
Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
PenWidth="{Binding ElementName=graph_viewer, Path=GraphPenWidth, Mode=OneWay}"
X_Scale="{Binding ElementName=graph_viewer, Path=X_Scale, Mode=OneWay}"
MaxTimeValue="{Binding ElementName=graph_viewer, Path=_SignalDataViewModel.MaxTimeValue, Mode=OneWay}"
/>
<ItemsPresenter />
</StackPanel>
</ScrollViewer>
</ControlTemplate>
獲得如果你將創建自定義'TreeView',你會工作嗎?我認爲最好使用一個'Template/Style',並試着將它放在那裏。現在很多開發者進行了一些更改來創建他們的'UserControls',但我認爲這是錯誤的。我們需要使用'Template',或者使用帶有類數據的'DataTemplate'。不僅僅是我,還有Adam Nathan在他的書「WPF 4釋放書」中。 –