• <Window x:Class="Expander_Sample2.Window1"
  • xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  • xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  • Title="Window1" Height="300" Width="300">
  • <Window.Resources>
  • <!--
  • ToogleButton的模板,
  • 因为要进和状态切换,故要用到ToggleButton控件
  • -->
  • <ControlTemplate x:Key="ToggleButtonTemp" TargetType="{x:Type ToggleButton}">
  • <Border x:Name="bd"
  • BorderThickness="1"
  • CornerRadius="1,1,1,1">
  • <Border.Background>
  • <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
  • <GradientStop Color="LightGray" Offset="0"/>
  • <GradientStop Color="White" Offset="1"/>
  • </LinearGradientBrush>
  • </Border.Background>
  • <Border.BorderBrush>
  • <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
  • <GradientStop Color="Black" Offset="0"/>
  • <GradientStop Color="Gray" Offset="1"/>
  • </LinearGradientBrush>
  • </Border.BorderBrush>
  • <Path Margin="2,2,2,2" Fill="Black" x:Name="p"
  • Data="M 0,0 L 4,5 L8,0 Z"
  • HorizontalAlignment="Center"
  • VerticalAlignment="Center"/>
  • </Border>
  • <ControlTemplate.Triggers>
  • <Trigger Property="IsMouseOver" Value="True">
  • <Setter TargetName="bd" Property="Background">
  • <Setter.Value>
  • <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
  • <GradientStop Color="LightGreen" Offset="0"/>
  • <GradientStop Color="White" Offset="1"/>
  • </LinearGradientBrush>
  • </Setter.Value>
  • </Setter>
  • </Trigger>
  • <Trigger Property="IsChecked" Value="True">
  • <Setter TargetName="p" Property="Data"
  • Value="M0,5 L8,5 L4,0 Z"/>
  • </Trigger>
  • <Trigger Property="IsEnabled" Value="True">
  • <Setter TargetName="bd" Property="BorderBrush" Value="Gray"/>
  • <Setter TargetName="p" Property="Fill" Value="Gray"/>
  • </Trigger>
  • </ControlTemplate.Triggers>
  • </ControlTemplate>
  • <!--
  • Expnder的样式
  • -->
  • <Style TargetType="{x:Type Expander}">
  • <Setter Property="Template">
  • <Setter.Value>
  • <ControlTemplate TargetType="{x:Type Expander}">
  • <Grid>
  • <Grid.RowDefinitions>
  • <RowDefinition Height="auto"/>
  • <RowDefinition x:Name="gr" Height="0"/>
  • </Grid.RowDefinitions>
  • <BulletDecorator Background="DarkTurquoise" Grid.Row="0" VerticalAlignment="Center" >
  • <BulletDecorator.Bullet>
  • <ToggleButton Margin="1,1,1,1"  Height="18" Width="18" Template="{StaticResource ToggleButtonTemp}"
  • IsChecked="{Binding Path=IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
  • OverridesDefaultStyle="True"/>
  • </BulletDecorator.Bullet>
  • <ContentPresenter HorizontalAlignment="Center" Margin="1,1,1,1" ContentSource="Header"/>
  • </BulletDecorator>
  • <Border x:Name="scv" Background="LightGray" BorderThickness="1" BorderBrush="Black" Grid.Row="1" >
  • <ContentPresenter Margin="0" ContentSource="Content"/>
  • </Border>
  • </Grid>
  • <ControlTemplate.Triggers>
  • <Trigger Property="IsExpanded" Value="True">
  • <Setter TargetName="gr" Property="Height" Value="{Binding Path=DesiredSize/Height,ElementName=scv}"/>
  • </Trigger>
  • </ControlTemplate.Triggers>
  • </ControlTemplate>
  • </Setter.Value>
  • </Setter>
  • </Style>
  • </Window.Resources>
  • <Grid>
  • <Expander Margin="10,10" Height="210" Width="130" OverridesDefaultStyle="True">
  • <Expander.Header>
  • <TextBlock Text="相见恨晚" FontWeight="Bold" FontSize="16"/>
  • </Expander.Header>
  • <TextBlock TextWrapping="Wrap">
  • 如果相见不会太晚,我们就不会悲伤,和你堂堂的手牵手,过得好简单,
  • 若我有天不见了,或许你会比较快乐,虽然有万般舍不得,也不愿看你难割舍
  • 若我有天不在了。请你原谅我的困扰,虽然你给我的不算少,只是我没福气要就算是完美。
  • </TextBlock>
  • </Expander>
  • </Grid>
  • </Window>

继续聊WPF——Expander控件(2)的更多相关文章

  1. 继续聊WPF——Expander控件(1)

    这个控件最实用的地方,就是做导航栏. <StackPanel Margin="20,20" Width="100" Height="460&qu ...

  2. WPF Expander控件(扩展面板)

    这算是我比较喜欢的一个控件,以前在Winform中也常用类似的.它包装了一块内容,通过单击一个小箭头按钮可以显示或隐藏所包含的内容.在线帮助以及Web页面经常使用这种技术,因为既可以包含大量内容,而又 ...

  3. 继续聊WPF——Thumb控件

    这个控件,真不好介绍,MSDN上也是草草几句,反正就是可以让用户拖动的玩意儿,但是,你会发现,当你在该控件上拖动时,它没有反响,也就是说这个东西默认不做任何操作的,它是赖在那里什么都不干,除非你去踢上 ...

  4. WPF中Expander控件样式,ListBox的样式(带checkbox)恢复

    Expander控件样式: <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButt ...

  5. 《WPF》Expander控件简单美化

    示例图: Expander控件功能很常见, 一般用于系统左侧的菜单收缩面板. 1.主要的组成 一个头部(header) 和 一个 内容(content) 组成. <Expander Expand ...

  6. 迟到的 WPF 学习 —— 控件

    这一章书中内容比较多而杂,但每个对象的内容又相对简短,所以只挑选里边有代表性的内容做记录. 1. Label 控件:一个基础的简单的 ContentControl,Labe 支持快捷键文本的设置,可以 ...

  7. 在 UWP 中实现 Expander 控件

    WPF 中的 Expander 控件在 Windows 10 SDK 中并不提供,本文主要说明,如何在 UWP 中创建这样一个控件.其效果如下图: 首先,分析该控件需要的一些特性,它应该至少包括如下三 ...

  8. WPF Popup 控件导致被遮挡内容不刷新的原因

    WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...

  9. 创建 WPF 工具箱控件

    创建 WPF 工具箱控件 WPF (Windows Presentation Framework) 工具箱控件模板允许您创建 WPF 控件,会自动添加到 工具箱 安装扩展的安装. 本主题演示如何使用模 ...

随机推荐

  1. 《鸟哥的Linux私房菜-基础学习篇(第三版)》(五)

    第4章 安装CentOS 5.x与多重引导小技巧        1. 本练习机的规划(尤其是分区參数)        分了四个分区: 1)/boot:primary 2)/:primary 3)/ho ...

  2. luogu3390 矩阵快速幂

    矩阵A乘矩阵B是A的第i行向量乘以B的第j列向量的值放在结果矩阵的i行j列.因为矩阵乘法满足结合律,所以它可以与一般的快速幂算法同理使用.注意矩阵在乘的时候取模. #include <cstdi ...

  3. bzoj3957

    数学+模拟 细节很多 首先我们发现,如果两个区间已经包含,那么可以输出empty,一个数能通过变换得到另一个区间的数,这个区间的大小必须小于等于终点区间的大小.加法不会改变区间大小,只有乘法会改变,而 ...

  4. [JavaEE] JBoss主要版本下载链接一览

    URL: http://teddysun.com/260.html JBoss在2006年被 RedHat 收购.在各种 J2EE 应用服务器中,JBoss 是最受欢迎而且功能最为强大的应用服务器.不 ...

  5. TCP/IP详解(三)

    超时与重传: TCP在发送一个包时,启动一个定时器,如果在定时器溢出之前没有收到ACK,则认为发出的包丢失了,此时会重传丢失的包.这就是超时重传. 其中定时器的时间不是一个固定值,它是根据RTT计算的 ...

  6. chapter6 数据结构基础之习题 Parentheses Balance

    You are given a string consisting of parentheses () and []. A string of this type is said to be corr ...

  7. 一种压缩图片的方法---Machine learning 之 K-Means

    背景描述: RGB编码:对于一个直接用24bit表示每一个而像素的图像来说,每一个pixel使用8-bit无符号整数(0-255)来表示红or绿or蓝. 压缩目的: 将128x128大小的图片由原来的 ...

  8. vs2008 启动IE浏览器 出现DW20.exe占用大量cpu 服务器iis 异常调试

    DW20.exe占用大量cpu 服务器iis运行出现异常想查一下故障原因,发现有好几个DW20.exe进程,每个占用20%左右的cpu,在任务管理器中将其终止后,它又自动运行起来了 查了一下DW20. ...

  9. 讲究地使用 List

    本篇旨意在于讨论List的基本用法,不做全面讲解,仅仅涉及构造函数List.Add.RemoveAt 先看看这几个函数的代码 1.构造函数 static readonly T[] _emptyArra ...

  10. 自动换行 word-break:break-all和word-wrap:break-word

    1.word-break:break-all;当内容(比如很长的一个单词)到每行的末端时,它会把单词截断显示一部分,下一行显示后一部分. 2.word-wrap:break-word;当内容(比如很长 ...