2013-10-17 57 views
0

我已將style添加到textbox,其中我修改textBoxControlTemplate。 我最終爲textbox擁有不同的control template。 但我有一個問題。 當我將IsEnabled屬性設置爲false時,正常的文本框只是greyed而已。 但具有不同控制模板的仍然是whiteTextBox,不同ControlTemplate + IsEnabled

有什麼具體的我需要添加作爲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> 

回答

1

您已經取代了默認XAML,使TextBoxIsEnabled設置爲False「變灰」。如果您要替換此功能,則需要複製原始ControlTemplate的那部分內容,您可以在MSDN上的TextBox Styles and Templates頁面找到該部分。

在默認ControlTemplate,你會看到一個VisualState名爲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> 
+0

我會試試看!謝謝你..再一次你來救我! – Sandepku

+0

我嘗試了顏色,但問題是,我無法匹配默認文本框的顏色方案,是否出現了我所做的錯誤。 ? – Sandepku

+0

我已經用我的模板更新了這個問題,同時邊框在禁用時也有所不同,我沒有線索,關於如何解決這些問題! – Sandepku