将WPF控件的ControlTemplate更改为不被禁用

问题描述 投票:0回答:1

我有一个 Devexpress

DateEdit
,并添加了何时
IsEnabled=False
的触发器,以将
ControlTemplate
更改为
Label
。这一切都工作正常,但我的问题是,
Text
Label
仍然是
Grayed out
(禁用)。

我的风格:

<Style x:Key="DateTimeDropDownStyle" TargetType="{x:Type dxe:DateEdit}">
        <Setter Property="Mask" Value="dd MMM yyyy"/>
        <Setter Property="MaskUseAsDisplayFormat" Value="True"/>
        <Style.Triggers>
            <Trigger Property="dxe:DateEdit.IsEnabled" Value="False">
                <Setter Property="dxe:DateEdit.Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Label Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text, StringFormat={}{0:dd MMM yyyyy}}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Trigger>
        </Style.Triggers>
    </Style>

所以,我的问题是,如何更改

Style
以便
Label
不被禁用?

wpf xaml styles label controltemplate
1个回答
2
投票

尝试在模板中的

Foreground
上设置
Label

如果没有帮助,您必须编辑标签的控件模板。基本的一个是:

<ControlTemplate TargetType="{x:Type Label}">
    <Border Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}"
            BorderThickness="{TemplateBinding BorderThickness}">
        <ContentPresenter Margin="{TemplateBinding Padding}"/>    
    </Border>
    <ControlTemplate.Triggers>
        <!--This is the trigger to remove-->
        <Trigger Property="IsEnabled"
                 Value="False">
            <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>
© www.soinside.com 2019 - 2024. All rights reserved.