任何人都知道我可以像WPF中的多列樹狀視圖一樣獲得控件嗎?WPF中的多列樹狀視圖
回答
我已經根據舊博客文章here實施了此操作。但是如果我沒有記錯的話,我必須做一些手動工作才能讓事情順利進行。具體與滾動條。
但是,這應該給你一個良好的開端。
在CodeProject上的一篇文章,可能會幫助:
http://www.codeproject.com/KB/WPF/TreeListView.aspx
有不少其他有用articles有關於WPF的TreeView。
SharpDevelop有ListView
子類叫做SharpTreeView
它可以做你正在尋找的東西。
你可以看到這個控制的SharpDevelop的 「觀察」 窗口的一個活生生的例子:在監視窗口中使用
XAML(在5.1.0測試版):
<tv:SharpGridView x:Key="variableGridView" AllowsColumnReorder="False">
<GridView.Columns>
<GridViewColumn Header="{core:Localize MainWindow.Windows.Debug.LocalVariables.NameColumn}" Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<tv:SharpTreeNodeView />
<local:AutoCompleteTextBox x:Name="name" Margin="-6 0 0 0" MinWidth="100" Text="{Binding Node.Name}" IsEditable="{Binding Node.CanSetName}">
<local:AutoCompleteTextBox.ContextMenu>
<MultiBinding Converter="{StaticResource menuBuilder}">
<Binding Path="Node.ContextMenuAddInTreeEntry" />
<Binding Path="Node" />
</MultiBinding>
</local:AutoCompleteTextBox.ContextMenu>
</local:AutoCompleteTextBox>
</StackPanel>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{core:Localize MainWindow.Windows.Debug.LocalVariables.ValueColumn}" Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:AutoCompleteTextBox
MinWidth="100"
Text="{Binding Node.Value}"
IsEditable="{Binding Node.CanSetValue}">
<local:AutoCompleteTextBox.ContextMenu>
<MultiBinding Converter="{StaticResource menuBuilder}">
<Binding Path="Node.ContextMenuAddInTreeEntry" />
<Binding Path="Node" />
</MultiBinding>
</local:AutoCompleteTextBox.ContextMenu>
</local:AutoCompleteTextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="{core:Localize MainWindow.Windows.Debug.LocalVariables.TypeColumn}" Width="200">
<GridViewColumn.CellTemplate>
<DataTemplate>
<local:AutoCompleteTextBox MinWidth="100" Text="{Binding Node.Type}" IsEditable="False">
<local:AutoCompleteTextBox.ContextMenu>
<MultiBinding Converter="{StaticResource menuBuilder}">
<Binding Path="Node.ContextMenuAddInTreeEntry" />
<Binding Path="Node" />
</MultiBinding>
</local:AutoCompleteTextBox.ContextMenu>
</local:AutoCompleteTextBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</tv:SharpGridView>
資源被設置爲SharpTreeView控件的View屬性。
不錯的截圖,但它應該如何使用?你的代碼示例似乎顯示了'tv:SharpTreeView.View`的定義,但其父母'tv:SharpTreeView`的其餘部分缺失。對於那些可以使用WPF的標準`TreeView`的人來說,它是如何工作的? – ygoe 2016-08-11 19:10:55
如果你不需要列標題,這很容易。您只需提供物品容器模板,在右側添加固定寬度的網格列,然後將其綁定到物品的相關數據。
一個TreeView控件的默認項容器有定義爲(增加了一些評論)的網格:
<Grid>
<Grid.ColumnDefinitions>
<!--Expander--><ColumnDefinition MinWidth="19" Width="Auto"/>
<!--Item--><ColumnDefinition Width="Auto"/>
<!--Overflow--><ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<!--Current Item--><RowDefinition Height="Auto"/>
<!--Sub-items--><RowDefinition/>
</Grid.RowDefinitions>
<ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ExpandCollapseToggleStyle}"/>
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Column="1" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
<ContentPresenter x:Name="PART_Header" ContentSource="Header" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<ItemsPresenter x:Name="ItemsHost" Grid.ColumnSpan="2" Grid.Column="1" Grid.Row="1"/>
</Grid>
所以才擴大這種網格包含可預見的寬度列在右邊,你將有列。
- 添加列定義爲新列,使其自動調整大小
- 更新「ItemsHost」的列跨度跨越添加的列
- 可預見的寬度控制添加到該列:
部分:
<Grid>
...
<ColumnDefinition Width="Auto"/>
...
<ItemsPresenter ... Grid.ColumnSpan="3" ... />
...
<Border Grid.Column="3"><!--Add column data here--></Border>
...
</Grid>
如果添加的邊框是所有行相同的寬度,你將有一個查看感覺像一個列與樹視圖。這顯然不能很好地擴展,但如果只需要一個快速和骯髒的解決方案,您應該可以在幾分鐘內完成此操作,而無需添加外部控件/庫的依賴關係。
我們的需求迅速增長,我們在問題使用添加外樹列標籤網格和數據綁定列的寬度有這些「列」的寬度[生成樹控制的實際寬度列自動大小的列]。這是有效的,這就是我所說的辯護。
如果您不介意(或需要)跨所有列延伸的選擇框(「Bd」邊框),則也可以在生成的項目模板而不是項目容器中完成此方法。
- 1. WPF樹視圖
- 2. 與多種類型的WPF樹視圖
- 3. 多個片段的樹狀視圖
- 4. WPF樹型視圖
- 5. WPF在樹狀視圖中操縱選定的項目
- 6. 更改WPF中樹狀視圖的選定項目
- 7. 支持拖動WPF中多個項目的多選樹視圖
- 8. 在WPF樹狀視圖中顯示來自sharepoint的列表和文件夾
- 9. 從WPF樹狀視圖中獲取選定文本
- 10. 默認在樹狀視圖中選擇topnode wpf MVVM
- 11. 水平樹(視圖)中的Winforms或WPF
- 12. WPF樹視圖中選擇的項目
- 13. Wpf樹視圖搜索
- 14. WPF - 創建樹視圖
- 15. WPF樹視圖事件
- 16. WPF:拉伸樹視圖
- 17. 樹狀視圖中的Win32文本框
- 18. 從wpf中的文件路徑列表填充樹視圖
- 19. 在WPF中綁定到樹視圖
- 20. 無法施展樹型視圖爲樹型視圖在WPF
- 21. 在樹狀視圖中顯示html odoo
- 22. 在樹狀視圖中雙擊事件
- 23. 在vb.net中使用樹狀視圖
- 24. 如何開發多列樹視圖asp.net
- 25. WPF - 在樹形視圖中篩選/搜索多個集合視圖
- 26. 我需要這樣的Wpf樹視圖
- 27. WPF:用樹視圖的數據綁定
- 28. 關於WPF樹視圖的問題
- 29. 在樹狀視圖中嵌套節點的wpf訪問堆棧面板
- 30. Android的樹視圖列表
我已經使用這個解決方案,它運作良好。 – Dylan 2009-01-21 15:40:41