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

时间:2013-01-19 09:27:54

标签: wpf xaml styles label controltemplate

我有一个Devexpress DateEdit并添加了一个触发器,用于IsEnabled=False何时将ControlTemplate更改为Label。这一切都运行正常,但我的问题是,Text的{​​{1}}仍为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未被禁用?

1 个答案:

答案 0 :(得分: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-->
        <Tirgger Property="IsEnabled"
                 Value="False">
            <Setter Property="Foreground"
                    Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>