样式

  1. 样式类比于Html中的css,可以批量对元素进行相关属性的设置
  2. 每个UI元素都可以有Style的属性,也可以统一放到Resources中
  3. 创建样式其值如下

    1. <Window.Resources>
    2. <Style x:Key="123" TargetType="TextBlock">
    3. <Setter Property="FontSize" Value="20"></Setter>
    4. <Setter Property="MaxHeight" Value="100"></Setter>
    5. <Setter Property="VerticalAlignment" Value="Center"></Setter>
    6. <Setter Property="TextAlignment" Value="Center"></Setter>
    7. <Setter Property="MaxWidth" Value="100"></Setter>
    8. <Setter Property="Background" Value="Red"></Setter>
    9. <Setter Property="Foreground" Value="Yellow"></Setter>
    10. </Style>
    11. </Window.Resources>
    12. <Grid>
    13. <TextBlock Style="{DynamicResource 123}">123</TextBlock>
    14. </Grid>
  4. 样式的重要属性

    1. targetType 样式作用的元素,默认为该类型的元素设置相关值,但是当style中设置了Key值时不会对元素默认使用相关属性
    2. baseon 样式的继承,通常不提议这样做,因为继承会让代码变得难维护
    3. setters 设置相关的属性值,还包括EventSetter <EventSetter Event="MouseLeftButtonDown" Handler="TextBlock_MouseLeftButtonDown"/>,设置相关的属性或事件
    4. triggers

      触发器

  5. 简单的触发器,当某个属性值为真是,改变相关的属性值

    1. <Style.Triggers>
    2. <Trigger Property="IsMouseOver" Value="True">
    3. <Setter Property="Background" Value="SkyBlue"></Setter>
    4. </Trigger>
    5. </Style.Triggers>
  6. 事件触发器,当某个值为真是,触发相关动画效果

    1. <EventTrigger RoutedEvent="Mouse.MouseEnter">
    2. <EventTrigger.Actions>
    3. <BeginStoryboard x:Name="testBgin">
    4. <Storyboard>
    5. <DoubleAnimation Duration="0:0:0.5" To="30" Storyboard.TargetProperty="FontSize"></DoubleAnimation>
    6. </Storyboard>
    7. </BeginStoryboard>
    8. </EventTrigger.Actions>
    9. </EventTrigger>

    行为

    行为不是WPF中自带的,而是来源于Blend设计,其作用是对元素的行为进行封装,例如:拖动,最大,最小化等动作。需要引用的dll包括:System.Windows.Interactivity.dll 或Microsoft.Expression.Interaction.dll

  7. 创建行为

    1. public class DragBehavior : Behavior<UIElement>
    2. {
    3. AssociatedObject // 重要对象,即操作的对象
    4. protected override void OnAttached(){}// 重写方法,主要是绑定相关的事件
    5. protected override void OnDetaching(){}// 重写方法,主要为减除相关的事件绑定
    6. }
  8. 使用行为

    1. 添加名称控件 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
    2. 针对相关元素使用行为
      1. <Canvas Grid.Row="1">
      2. <Ellipse Canvas.Left="10" Canvas.Top="70" Fill="Yellow" Width="80" Height="60">
      3. <i:Interaction.Behaviors>
      4. <local:DragBehavior></local:DragBehavior>
      5. </i:Interaction.Behaviors>
      6. </Ellipse>
      7. </Canvas>