WPF内联样式未设置模板值

时间:2017-07-20 21:15:16

标签: wpf xaml wpf-style

我有一些基本按钮样式,我想继承并做一些小的更改,但不是在主样式。 我使用最小的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;
}

感谢阅读。

1 个答案:

答案 0 :(得分:0)

两个触发器都有效。您明确设置高度=“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>