0603模板触发器与数据模板

1、不需要名称指定

ContentPresenter是可以不需要名称的x:Name="contentPresenter"

做一些公用的样式处理也可以不写ContentPresenter

2、 不同按钮可以引用不同的模板

可以自定义

<ControlTemplate TargetType="Button" x:Key="buttonTemp">

通过属性Template指定 Template="{StaticResource buttonTemp}"

也可以根据某个属性进行配置,1,2,3其实没什么意义,直接写Template就行

 

3、触发器

文字1的时候显示出来,0的时候隐藏

添加Tag标签属性,在Trigger里面针对属性操作

4、直角改圆角

<ControlTemplate TargetType="Button" x:Key="buttonTemp">
  <Border CornerRadius="5" BorderThickness="2" BorderBrush="Red">
  </Border>
</ControlTemplate>

所有引用的地方都会生效 Template="{StaticResource buttonTemp}"

   

 

5、什么控件有 Template属性?

 Template定义在Control下面

 

FrameworkElement : UIElement

Control : FrameworkElement

ContentControl : Control

ButtonBase : ContentControl

Button : ButtonBase

只要继承自Control的就一定有Template属性

 

TextBlock : FrameworkElement

就没有 Template,并不能称之为一个控件,只能是一个元素

控件模版主要是针对于控件的显示

 

6、TemplateBinding

怎么把父控件属性从外面传递到模板内部处理

<Button Content="Zys" Width="120" Height="80" Template="{StaticResource buttonTemp}" Tag="按钮文本">

通过数据传输纽带Tag

<TextBlock Text="{TemplateBinding Tag}" Grid.Row="1" />

    <Window.Resources>
        <ControlTemplate TargetType="Button" x:Key="buttonTemp">
            <Border CornerRadius="5" BorderThickness="2" BorderBrush="Red"  Background="{TemplateBinding Background}"
                    Name="border">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <ContentPresenter Name="txt"/>
                    <TextBlock Grid.Row="1" Text="{TemplateBinding Tag}" FontSize="20" Foreground="Red"/>
                </Grid>
            </Border>
        </ControlTemplate>        
    </Window.Resources>
    <Grid>
        <Button Content="hello" Width="100" Height="100" Template="{DynamicResource buttonTemp}" Tag="Tag文字"/>
    </Grid>

也可以绑定 Background="{TemplateBinding Background}"

 TextBox默认白色会遮挡,可以设置为透明色Background="Transparent"

 

方向,从控件到模板

反方向操作 只是临时性的,比如鼠标滑动改变颜色,不会写到控件里去

 

 

7、其它占位

ContentPresenter、内容占位

集合占位

ltemsPresenter、
ScrollContentPresenter

 

 这样的图,可以修改进度条模板

还有水波纹环形动画效果

 

posted on 2025-04-11 10:30  张彦山  阅读(27)  评论(0)    收藏  举报