【问题标题】:Style Trigger doesn't change StrokeThickness property of a line样式触发器不会更改线条的 StrokeThickness 属性
【发布时间】:2014-02-12 16:22:43
【问题描述】:

我想使用触发器更改 Line 形状的 StrokeThickness 属性,但它没有改变,我尝试使用 Opacity 属性并成功了!

<Window x:Class="Layout.LineTrigger"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="LineTrigger" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="{x:Type Line}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="StrokeThickness" Value="20"/>
                    <Setter Property="Opacity" Value=".3"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Canvas Background="Black" Width="300" Height="300">
        <Line X1="10" Y1="10" X2="60" Y2="100" 
              Stroke="Red" StrokeThickness="1" 
              SnapsToDevicePixels="True">
        </Line>
    </Canvas>
</Window>

【问题讨论】:

    标签: wpf xaml triggers styles line


    【解决方案1】:

    当您手动设置值时,它优先于样式触发器。将默认值带入StyleSetter

    <Style TargetType="{x:Type Line}">
        <Setter Property="StrokeThickness" Value="1"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="StrokeThickness" Value="20"/>
                <Setter Property="Opacity" Value=".3"/>
            </Trigger>
        </Style.Triggers>
    </Style>
    

    并且不要针对Line指定它

    <Line X1="10" Y1="10" X2="60" Y2="100" Stroke="Red" SnapsToDevicePixels="True"/>
    

    你可以在这里找到整个层次结构:Dependency Property Setting Precedence List

    【讨论】:

      猜你喜欢
      • 2016-02-01
      • 1970-01-01
      • 2017-09-14
      • 1970-01-01
      • 2021-01-27
      • 2011-05-21
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多