代码之家  ›  专栏  ›  技术社区  ›  Siegfried.V

如果添加了触发器,则不应用按钮默认样式

  •  0
  • Siegfried.V  · 技术社区  · 6 年前

    <Style TargetType="{x:Type Button}">
        <Setter Property="FontSize" Value="14"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border 
                        x:Name="Border"  
                        CornerRadius="2" 
                        BorderThickness="1"
                        Background="{StaticResource WindowBorderColor}"
                        BorderBrush="{StaticResource WindowBorderColor}">
                        <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Background" Value="{StaticResource InactiveBackgroundColor}"/>
                            <Setter Property="Foreground" Value="{StaticResource InactiveForegroundColor}"/>
                            <Setter Property="Opacity" Value="0.5"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" Value="{StaticResource HeaderButtonOverColor}"/>
                            <Setter Property="Foreground" Value="{StaticResource HeaderForeHighlightColor}"/>
                        </Trigger>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Background" Value="{StaticResource HeaderButtonPressedColor}"/>
                            <Setter Property="Foreground" Value="{StaticResource WindowForeColor}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    

    但当我想给按钮添加触发器时,默认样式不再考虑:

    <Button Content="{x:Static p:Resources.Delete}" Click="DeleteMacro_Click" Margin="3" >
        <Button.Style>
            <Style TargetType="{x:Type Button}">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding MacroLeft.Name, Mode=OneWay}" Value="">
                        <Setter Property="Button.IsEnabled" Value="False" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
    

    link ,所以我补充说 TargetType="{x:Type Button}" 在我的WPF里,但什么都没变。

    1 回复  |  直到 6 年前
        1
  •  1
  •   AJITH    6 年前

    您可以在中定义样式应用程序.xaml以下列方式作为基础

    <Button.Style>
         <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
    
         </Style>
    </Button.Style>