0

我已将 a 添加style到 a中,textbox在其中修改ControlTemplate. textBox我最终control templatetextbox. 但我有一个问题。当我将该IsEnabled属性设置为 false 时,普通的文本框就greyed出来了。但是控制模板不同的那个,依然存在white

control template为了获得默认行为,我需要添加一些特定的东西作为 的一部分吗?

谢谢桑迪普

更新 -> 添加了控制模板。

<ControlTemplate TargetType="{x:Type commonControls:DerivedTextBox}">
                <Border Name="Border"
                    CornerRadius="2"
                    Padding="2"
                    BorderThickness="1">
                    <Border.Background>
                        <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
                    </Border.Background>
                    <Border.BorderBrush>
                        <SolidColorBrush Color="{DynamicResource BorderMediumColor}" />
                    </Border.BorderBrush>
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal" />
                            <VisualState x:Name="Disabled">
                                <Storyboard>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                            Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
                                        <EasingColorKeyFrame KeyTime="0"
                                     Value="{DynamicResource ControlLightColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="ReadOnly">
                                <Storyboard>
                                    <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
                                            Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)">
                                        <EasingColorKeyFrame KeyTime="0"
                                     Value="{StaticResource DisabledControlDarkColor}" />
                                    </ColorAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="MouseOver" />
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <ScrollViewer Margin="0"
                    x:Name="PART_ContentHost" />
                </Border>
            </ControlTemplate>
4

1 回答 1

1

您已经替换了默认 XAML,当设置为时会TextBox“变灰” 。如果要替换此功能,则需要复制原始的那部分,您可以在 MSDN 的页面上找到该部分。IsEnabledFalseControlTemplateTextBox Styles and Templates

在默认的 s 中ControlTemplate,您会看到VisualState带有名称的 a Disabled... 这就是您所需要的,但您也可以VisualState从那里复制大部分 s。

<VisualState x:Name="Disabled">
    <Storyboard>
        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
            Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
            <EasingColorKeyFrame KeyTime="0"
                Value="{StaticResource DisabledControlLightColor}" />
        </ColorAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>
于 2013-10-17T10:27:02.793 回答