WPF Telerik TreeListView样式设计
Telerik控件 TreeListView
修改其中样式
1、添加TreeListView控件
<telerik:RadTreeView x:Name="ObjecTreeView" Padding="0,5,0.5,5" Grid.Row="1" BorderThickness="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" telerik:StyleManager.Theme="Windows8" SelectionMode="Single" Background="White" SelectionChanged="ObjecTreeView_OnSelectionChanged" SelectedValuePath="DisplayName" AutoScrollToSelectedItem="True" IsExpandOnSingleClickEnabled="True" FocusVisualStyle="{x:Null}" ><telerik:RadTreeView.ItemTemplateSelector><styleSelector:ObjectTreeTemplateSelector ItemTemplate="{StaticResource ObjectItemTemplate}" TreeItemTemplate="{StaticResource ObjectTreeTemplate}"></styleSelector:ObjectTreeTemplateSelector></telerik:RadTreeView.ItemTemplateSelector></telerik:RadTreeView>
View Code
通过模板选择器,选择相应的模板
2、模板
1)级联模板
<!--对象树母模板--><HierarchicalDataTemplate x:Key="ObjectTreeTemplate" ItemsSource="{Binding ObjectTypeModels}" ItemTemplate="{StaticResource ObjectItemTemplate}" ItemContainerStyle="{StaticResource RadTreeViewItemStyle1}"><StackPanel Orientation="Horizontal"><Image Source="..\..\Images\操作图标\内容\文件夹.png" VerticalAlignment="Center" Height="14" Margin="0,0,5,0"/><CheckBox x:Name="MotherCheckBox" Visibility="{Binding CheckBoxVisibility,Mode=TwoWay}" IsChecked="{Binding IsChecked,Mode=TwoWay}" Click="ButtonBase_OnClick"></CheckBox><TextBlock Text="{Binding DisplayName,Mode=TwoWay}" Margin="5,0,0,0" /></StackPanel></HierarchicalDataTemplate>
View Code
2)子模板
<!--对象树子模板--><DataTemplate x:Key="ObjectItemTemplate"><ContentControl Content="{Binding}"><ContentControl.Style><Style TargetType="ContentControl"><Setter Property="ContentTemplate" Value="{StaticResource ObjectItemTemplateNoSelect}"></Setter><Style.Triggers><DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadTreeViewItem}}, Path=IsSelected}" Value="true"><Setter Property="ContentTemplate" Value="{StaticResource ObjectItemTemplateSelected}"></Setter></DataTrigger></Style.Triggers></Style></ContentControl.Style></ContentControl></DataTemplate>
View Code
选中样式
<!--对象树选中状态子模板--><DataTemplate x:Key="ObjectItemTemplateSelected"><StackPanel Orientation="Horizontal"><Image Source="..\..\Images\操作图标\内容\文件_Click.png" VerticalAlignment="Center" Height="14" Margin="0,0,5,0"/><CheckBox x:Name="ChildCheckBox" Visibility="{Binding CheckBoxVisibility,Mode=TwoWay}" IsChecked="{Binding IsChecked,Mode=TwoWay}"></CheckBox><TextBlock Text="{Binding DisplayName,Mode=TwoWay}" Foreground="#FFB83838" FontWeight="Black" Margin="5,0,0,0"/></StackPanel></DataTemplate>
View Code
未选中样式
<!--对象树未选中状态子模板--><DataTemplate x:Key="ObjectItemTemplateNoSelect"><StackPanel Orientation="Horizontal"><Image Source="..\..\Images\操作图标\内容\文件.png" VerticalAlignment="Center" Height="14" Margin="0,0,5,0"/><CheckBox x:Name="ChildCheckBox" Visibility="{Binding CheckBoxVisibility,Mode=TwoWay}" IsChecked="{Binding IsChecked,Mode=TwoWay}"></CheckBox><TextBlock Text="{Binding DisplayName,Mode=TwoWay}" Margin="5,0,0,0" /></StackPanel></DataTemplate>
View Code
2、TreeListView的样式,设置子项的容器、焦点样式等。
<!--模板的样式--><Style x:Key="RadTreeViewItemStyle1" TargetType="{x:Type telerik:RadTreeViewItem}"><Setter Property="FocusVisualStyle"><Setter.Value><Style><Setter Property="Control.Template"><Setter.Value><ControlTemplate><Rectangle Margin="0" Stroke="Transparent" StrokeThickness="0"/></ControlTemplate></Setter.Value></Setter></Style></Setter.Value></Setter><Setter Property="HorizontalContentAlignment" Value="Left"/><Setter Property="VerticalContentAlignment" Value="Center"/><Setter Property="BorderThickness" Value="1"/><Setter Property="Padding" Value="1,0,5,0"/><Setter Property="IsDropAllowed" Value="True"/><Setter Property="IsEnabled" Value="True"/><Setter Property="MinHeight" Value="24"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type telerik:RadTreeViewItem}"><Grid x:Name="RootElement"><Grid.RowDefinitions><RowDefinition Height="Auto"/><RowDefinition/></Grid.RowDefinitions><Grid x:Name="HeaderRow" Background="Transparent" MinHeight="{TemplateBinding MinHeight}"><Grid.ColumnDefinitions><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="2"/><Border x:Name="MouseOverVisual" BorderThickness="0" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="1" Opacity="0"><Border BorderBrush="White" BorderThickness="0" CornerRadius="0" Background="Transparent"></Border></Border><Border x:Name="SelectionUnfocusedVisual" BorderThickness="0" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="1" Visibility="Collapsed"><Border BorderBrush="Transparent" BorderThickness="0" CornerRadius="0" Background="LightGray"></Border></Border><Border x:Name="SelectionVisual" BorderThickness="0" Grid.ColumnSpan="6" Grid.Column="2" CornerRadius="1" Visibility="Collapsed"><Border BorderBrush="Transparent" BorderThickness="0" CornerRadius="0" Background="LightGray"></Border></Border><StackPanel x:Name="IndentContainer" Orientation="Horizontal"><Rectangle x:Name="IndentFirstVerticalLine" Stroke="#FFCCCCCC" Visibility="Collapsed" VerticalAlignment="Top" Width="1"/></StackPanel><Grid x:Name="ListRootContainer" Grid.Column="1" HorizontalAlignment="Center" MinWidth="20"><Rectangle x:Name="HorizontalLine" HorizontalAlignment="Right" Height="1" Stroke="#FFCCCCCC" VerticalAlignment="Center"/><Rectangle x:Name="VerticalLine" HorizontalAlignment="Center" Stroke="#FFCCCCCC" VerticalAlignment="Top" Width="1"/><ToggleButton x:Name="Expander" Background="{TemplateBinding Background}" IsTabStop="False"/><Grid x:Name="LoadingVisual" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5" Visibility="Collapsed" VerticalAlignment="Center"><Grid.RenderTransform><TransformGroup><RotateTransform Angle="0" CenterY="0.5" CenterX="0.5"/></TransformGroup></Grid.RenderTransform><Path Data="M1,0A1,1,90,1,1,0,-1" Height="10" StrokeStartLineCap="Round" Stretch="Fill" Stroke="{TemplateBinding Foreground}" StrokeThickness="1" Width="10"/><Path Data="M0,-1.1L0.1,-1 0,-0.9" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Left" Height="4" Margin="5,-1.5,0,0" Stretch="Fill" StrokeThickness="1" VerticalAlignment="Top" Width="4"/></Grid></Grid><CheckBox x:Name="CheckBoxElement" Grid.Column="2" IsTabStop="False" Margin="5,0,0,0" Visibility="Collapsed" VerticalAlignment="Center"><telerik:StyleManager.Theme><telerik:Office_BlackTheme/></telerik:StyleManager.Theme></CheckBox><RadioButton x:Name="RadioButtonElement" Grid.Column="2" IsTabStop="False" Margin="5,0,0,0" Visibility="Collapsed" VerticalAlignment="Center"><telerik:StyleManager.Theme><telerik:Office_BlackTheme/></telerik:StyleManager.Theme></RadioButton><Image x:Name="Image" Grid.Column="3" HorizontalAlignment="Center" MaxWidth="16" MaxHeight="16" Margin="2" VerticalAlignment="Center"/><Rectangle x:Name="FocusVisual" Grid.ColumnSpan="6" Grid.Column="2" IsHitTestVisible="False" RadiusY="3" RadiusX="3" Stroke="Black" StrokeThickness="0" StrokeDashArray="1 2" Visibility="Collapsed"/><Grid Grid.ColumnSpan="2" Grid.Column="4"><ContentPresenter x:Name="Header" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/><ContentPresenter x:Name="EditHeaderElement" ContentTemplate="{TemplateBinding HeaderEditTemplate}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="Collapsed" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Grid></Grid><ItemsPresenter x:Name="ItemsHost" Grid.Row="1" Visibility="Collapsed"/></Grid><ControlTemplate.Triggers><Trigger Property="IsInEditMode" Value="True"><Setter Property="Visibility" TargetName="Header" Value="Collapsed"/><Setter Property="Visibility" TargetName="EditHeaderElement" Value="Visible"/></Trigger><Trigger Property="IsSelected" Value="True"><Setter Property="Visibility" TargetName="SelectionVisual" Value="Visible"/></Trigger><Trigger Property="IsFocused" Value="True"><Setter Property="Visibility" TargetName="FocusVisual" Value="Visible"/></Trigger><MultiTrigger><MultiTrigger.Conditions><Condition Property="IsSelected" Value="True"/><Condition Property="IsSelectionActive" Value="False"/></MultiTrigger.Conditions><Setter Property="Opacity" TargetName="SelectionVisual" Value="0"/><Setter Property="Visibility" TargetName="SelectionUnfocusedVisual" Value="Visible"/></MultiTrigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Opacity" TargetName="Header" Value="0.5"/></Trigger><Trigger Property="IsExpanded" Value="True"><Setter Property="Visibility" TargetName="ItemsHost" Value="Visible"/></Trigger><Trigger Property="IsLoadingOnDemand" Value="True"><Trigger.EnterActions><BeginStoryboard x:Name="LoadingVisualTransform"><Storyboard><DoubleAnimation Duration="0:0:1" From="0" RepeatBehavior="Forever" To="359" Storyboard.TargetProperty="Angle" Storyboard.TargetName="LoadingVisualAngleTransform"/></Storyboard></BeginStoryboard></Trigger.EnterActions><Trigger.ExitActions><StopStoryboard BeginStoryboardName="LoadingVisualTransform"/></Trigger.ExitActions><Setter Property="Visibility" TargetName="LoadingVisual" Value="Visible"/><Setter Property="Visibility" TargetName="Expander" Value="Collapsed"/></Trigger><Trigger Property="IsDragOver" Value="True"><Setter Property="Opacity" TargetName="MouseOverVisual" Value="1"/></Trigger><Trigger Property="IsMouseOver" SourceName="HeaderRow" Value="True"><Setter Property="Opacity" TargetName="MouseOverVisual" Value="1"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter><Setter Property="ItemsPanel"><Setter.Value><ItemsPanelTemplate><telerik:TreeViewPanel IsItemsHost="True" IsVisualCacheEnabled="False" VerticalAlignment="Bottom"/></ItemsPanelTemplate></Setter.Value></Setter></Style>
View Code
转载于:https://www.cnblogs.com/kybs0/p/5816183.html
WPF Telerik TreeListView样式设计相关推荐
- WPF XAML 资源样式模板属性存放位置
WPF XAML 资源样式模板属性存放位置 原文:WPF XAML 资源样式模板属性存放位置 WPF的XAML 资源申明 类似HTML. 整体来说分3种 1.行类资源样式属性 1.1 行内属性 < ...
- WPF快速入门系列(6)——WPF资源和样式
WPF快速入门系列(6)--WPF资源和样式 一.引言 WPF资源系统可以用来保存一些公有对象和样式,从而实现重用这些对象和样式的作用.而WPF样式是重用元素的格式的重要手段,可以理解样式就如CSS一 ...
- WPF自定义控件与样式(8)-ComboBox与自定义多选控件MultComboBox
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: 下拉选 ...
- 【转】WPF自定义控件与样式(3)-TextBox RichTextBox PasswordBox样式、水印、Label标签、功能扩展...
一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文 ...
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
原文:WPF自定义控件与样式(1)-矢量字体图标(iconfont) 一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序 ...
- WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展
原文:WPF自定义控件与样式(5)-Calendar/DatePicker日期控件自定义样式及扩展 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐 ...
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
原文:WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式 一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等, ...
- WPF编程学习 —— 样式
本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的 ...
- wpf控件样式管理示意图
原文:wpf控件样式管理示意图
最新文章
- SAP WM 2-Step Picking的TO单据特殊的地方
- Bullet 3D 物理引擎 简析(2)
- 若使用numba.cuda.jit加速pytorch训练代码会怎样
- shell脚本中向hive动态分区插入数据
- 作者:李冰(1989-),女,中国电子技术标准化研究院工程师。
- JS中的==和===的区别
- 走进软件测试面试(真题分析)
- RTC硬件时钟设置修改【转】
- linux 之学习路线
- ios mysql工具_iOS数据库可视化工具--直接在iPhone操作你的数据库
- 群晖系统服务器设置,私人云搭建 篇二:群晖系统搭建和初步设置的不正确指北...
- iOS 图片遮罩动画,图片逐渐显示
- QUESTION: 由于文件 无法被用户‘_apt‘访问,已脱离沙盒并提权为根用户来进行下载。 - pkgAcquire::Run (13: 权限不够)
- 首出集团:超级推荐引爆流量,6步店铺跨越到第六层级
- mysql capi函数详解_CAPI函数描述(G-N)
- Linux搜索查找命令【详细整理】
- 卡马克快速平方根(平方根倒数)算法(转)
- datagridview 单击某个单元格选中一行
- androID程序!BAT大厂面试基础题集合,附带学习经验
- SQL Server新增Contained Database功能
热门文章
- how to solve undefined reference in igllib
- 2D Fast Marching Computations
- python3.7语法错误_Tweepy不会安装在Python3.7上;显示“语法错误”
- 水准网测量平差matlab_1K417012场区控制测量
- python3生成随机数_python3实现随机数
- 设计模式之十一:创建模式(Builder Pattern)
- Safari 快捷键
- Cocos2dx 之 ButtonSprite
- linux脚本解密,给shell脚本加密和解密的shell脚本
- 开启Golang编程第一章