![](/img/trans.png)
[英]Binding Textbox IsEnabled to two different Radiobuttons at the same time
[英]TextBox , different ControlTemplate + IsEnabled
我向textbox
添加了style
,在其中修改了textBox
的ControlTemplate
。 我最終為textbox
使用了另一個control template
。 但是我有一個問題。 當我將IsEnabled
屬性設置為false時,普通的文本框只是greyed
為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>
當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.