WPF 内联样式未设置模板值

WPF Inline style not setting template values

我想继承一些基本按钮样式并进行一些小的更改,但不是主要样式。 我用最少的 xaml 将主要问题提取到一个新的应用程序中。 我唯一想完成的是在禁用按钮时更改按钮高度。

这两个触发器是我试过的,它们似乎都不起作用,也没有给出任何关于无法找到它的绑定的调试消息。

<Button HorizontalAlignment="Center"
    Height="90"
    Margin="5"
    Click="Button_Click"
    VerticalAlignment="Bottom">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="Button.IsEnabled"
                         Value="False">
                    <Setter Property="Button.Height"
                            Value="50" />
                </Trigger>
                <DataTrigger Binding="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}}"
                             Value="False">
                    <Setter Property="Button.Height"
                            Value="50" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
    Foo Bar
</Button>

点击按钮

private void Button_Click(object sender, RoutedEventArgs e)
{
    (sender as FrameworkElement).IsEnabled = false;
}

感谢阅读。

两个触发器都有效。您明确设置了 Height="90",它 覆盖了 您的风格!如果您希望它起作用,您应该在样式中设置初始高度并将其从 Button 标记中删除。

<Style TargetType="Button">
    <Setter Property="Button.Height" Value="90" />
    <Style.Triggers>
        <Trigger Property="Button.IsEnabled"
                 Value="False">
            <Setter Property="Button.Height"
                    Value="50" />
        </Trigger>
    </Style.Triggers>
</Style>