• WPF 学习之控件模板 ControlTemplate Triggers


    控件模板ControlTemplate,有两部分:VistualTree视觉树,即是能看到的外观;Trigger触发器,里面包括外部条件达到某一条件下会引起的响应。
    <Window.Resources> <ControlTemplate x:Key="ButtonTempalted" TargetType="{x:Type Button}"> <Border Name="Border" BorderThickness="2" CornerRadius="3" BorderBrush="AliceBlue" Background="Aqua" TextBlock.Foreground="White"> <ContentPresenter Margin="{TemplateBinding Padding}" HorizontalAlignment="Center" VerticalAlignment="Center" > </ContentPresenter> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True" > <Setter TargetName="Border" Property="Background" Value="Red"></Setter> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="Border" Property="Background" Value="White"></Setter> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Window.Resources> <StackPanel Margin="5"> <Button Margin="5" Padding="3">Normal Button</Button> <Button Margin="5" Padding="3" Name="myBorder" Template="{StaticResource ResourceKey=ButtonTempalted}">Templated Button</Button> </StackPanel>
    以上xml中描述
    StackPanel 中添加了2个Button控件,一个不使用控件模板Normal Button 一个使用ButtonTempalted 控件模板资源
    控件模板中包含视覚树 和触发器,在上述例子中我设置了 该控件模板目标类型为Button 在外观设置中设置buuton的Border的外观属性 
    需要注意的是如果仅如下设置border外观,buuton控件不能正常显示,此时还需要设置ContentPresenter内容表示器 设置内容元素的属性
     <Border Name="Border" BorderThickness="2" CornerRadius="3" BorderBrush="AliceBlue" Background="Aqua" TextBlock.Foreground="White">
                    
                </Border>

    Trigger 触发器设置控件模板的行为

     <Trigger Property="IsMouseOver" Value="True" >
                        <Setter TargetName="Border"   Property="Background" Value="Red"></Setter>
                    </Trigger>

    需要设置 Property 行为目标 Value触发该行为的值 

  • 相关阅读:
    Laya页面嵌套和Scene.destory导致的Bug
    Laya的滚动容器Panel+HBox
    Laya的对象唯一标识
    Android自带的TTS功能
    一步一步学android之控件篇——ListView基本使用
    android surfaceView 的简单使用 画图,拖动效果
    Android 数据分析系列一:sharedPreferences
    Android Service总结
    android中碰撞屏幕边界反弹问题
    Android开发:setAlpha()方法和常用RGB颜色表----颜色, r g b分量数值(int), 16进制表示 一一对应
  • 原文地址:https://www.cnblogs.com/houzf/p/10258559.html
Copyright © 2020-2023  润新知