WPF Treeview第三层横向排列
生活随笔
收集整理的這篇文章主要介紹了
WPF Treeview第三层横向排列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WPF 第三級橫向排列效果,左側使用WrapPanel,右側使用StackPanel,效果見下圖:
代碼如下:
Mainwindow的xaml如下:
<Window x:Class="WPFDemos.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WPFDemos"mc:Ignorable="d"x:Name="widnow"WindowStartupLocation="CenterScreen"UseLayoutRounding="True"Background="LightBlue"FontSize="16"Title="title" Height="500" Width="1000"><Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><TreeView Grid.Column="0" Margin="5" Width="300" ItemsSource="{Binding Items,ElementName=widnow}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><HierarchicalDataTemplate.ItemContainerStyle><Style TargetType="TreeViewItem"><Setter Property="ItemsPanel"><Setter.Value><ItemsPanelTemplate><WrapPanel Width="300"/></ItemsPanelTemplate></Setter.Value></Setter> </Style></HierarchicalDataTemplate.ItemContainerStyle><TextBlock Text="{Binding DisplayText}"/><HierarchicalDataTemplate.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><TextBlock Text="{Binding DisplayText}"/></HierarchicalDataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView><TreeView Grid.Column="1" Margin="5" Width="300" ItemsSource="{Binding Items,ElementName=widnow}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><HierarchicalDataTemplate.ItemContainerStyle><Style TargetType="TreeViewItem"><Setter Property="ItemsPanel"><Setter.Value><ItemsPanelTemplate><StackPanel Orientation="Horizontal"/></ItemsPanelTemplate></Setter.Value></Setter> </Style></HierarchicalDataTemplate.ItemContainerStyle><TextBlock Text="{Binding DisplayText}"/><HierarchicalDataTemplate.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><TextBlock Text="{Binding DisplayText}"/></HierarchicalDataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView></Grid> </Window>MainWindow的后臺代碼如下:
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Globalization; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; namespace WPFDemos {public partial class MainWindow : Window, INotifyPropertyChanged{private ObservableCollection<ItemViewModel> _items = new ObservableCollection<ItemViewModel>();public ObservableCollection<ItemViewModel> Items{get { return _items; }set{_items = value;OnPropertyChanged(nameof(Items));}}public MainWindow(){InitializeComponent();Items = new ObservableCollection<ItemViewModel>(){new ItemViewModel{DisplayText="中國人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="馬云"},new ItemViewModel{DisplayText="馬化騰",Children=new ObservableCollection<ItemViewModel>(){new ItemViewModel{ DisplayText="身價:100億"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},}},new ItemViewModel{DisplayText="WPF UI作者",Children=new ObservableCollection<ItemViewModel>(){new ItemViewModel{ DisplayText="身價:100億"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},new ItemViewModel{ DisplayText="老婆數:100個"},}},}},new ItemViewModel{DisplayText="中國人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="馬云"},new ItemViewModel{DisplayText="馬化騰"},new ItemViewModel{DisplayText="WPF UI作者"},}},new ItemViewModel{DisplayText="歪果人",Children=new ObservableCollection<ItemViewModel>{new ItemViewModel{DisplayText="喬布斯"},new ItemViewModel{DisplayText="巴菲特"},}},};}public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string name){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));}}public class ItemViewModel : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;public void OnPropertyChanged(string name){PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));}public string DisplayText { get; set; }public ObservableCollection<ItemViewModel> Children { get; set; } = new ObservableCollection<ItemViewModel>();}public class TreeItemMarginConverter : IValueConverter{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){var left = 0.0;UIElement element = value as TreeViewItem;while (element != null && element.GetType() != typeof(TreeView)){element = (UIElement)VisualTreeHelper.GetParent(element);if (element is TreeViewItem)left += 18.0;}return new Thickness(left, 0, 0, 0);}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){throw new NotImplementedException();}} }總結
以上是生活随笔為你收集整理的WPF Treeview第三层横向排列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 Ubuntu 上安装 .NET SD
- 下一篇: NET问答: LINQ 中为啥不能将 S