簡體   English   中英

TextBox,不同的ControlTemplate + IsEnabled

[英]TextBox , different ControlTemplate + IsEnabled

我向textbox添加了style ,在其中修改了textBoxControlTemplate 我最終為textbox使用了另一個control template 但是我有一個問題。 當我將IsEnabled屬性設置為false時,普通的文本框只是greyedgreyed 但是具有不同控制模板的那個仍然保持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>

IsEnabled設置為False時,您已替換了默認的XAML,該默認XAML使TextBox變灰。 如果要替換此功能,則需要復制原始ControlTemplate該部分,您可以在MSDN上的“ TextBox Styles and Templates頁面上找到該TextBox Styles and Templates

在默認的ControlTemplate ,您將看到一個名稱為Disabled ...的VisualState ,這是您所需要的,但您也可以從那里復制大多數VisualState

<VisualState x:Name="Disabled">
    <Storyboard>
        <ColorAnimationUsingKeyFrames Storyboard.TargetName="Border"
            Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)">
            <EasingColorKeyFrame KeyTime="0"
                Value="{StaticResource DisabledControlLightColor}" />
        </ColorAnimationUsingKeyFrames>
    </Storyboard>
</VisualState>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM