我想要使用Resources
中的VisualState
更改TextBox
的Foreground
的Silverlight3
。下面的代碼是我到目前爲止嘗試過的。但它沒有奏效。請指導我。在VisualState中更改焦點上的TextBox Foreground
<TextBox x:Name="EmailTextBox" Text="{Binding UserName, Mode=TwoWay}"
Grid.Row="0" Grid.Column="1" Style="{StaticResource TextBoxEmailStyle}"/>
,這裏是引用Style
爲TextBox
以上:
<Style x:Key="TextBoxEmailStyle" TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TextBox">
<Grid x:Name="RootElement">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.3"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Focused">
<Storyboard>
<ColorAnimation
Duration="0" To="#00000000"
Storyboard.TargetName="ContentElement"
Storyboard.TargetProperty="(ContentElement.Foreground).
(SolidColorBrush.Color)"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Opacity="1">
<Grid>
<Border x:Name="ReadOnlyVisualElement"
Background="#5EC9C9C9"
Opacity="0"/>
<Border x:Name="MouseOverBorder"
BorderBrush="Transparent"
BorderThickness="1">
<StackPanel Orientation="Horizontal">
<Image
Width="40"
Source="/Images/sign_in_email.png"
Margin="5,5,5,5"/>
<ScrollViewer x:Name="ContentElement"
BorderThickness="0"
IsTabStop="False"
Padding="{TemplateBinding Padding}"
VerticalAlignment="Center"
Margin="4"/>
</StackPanel>
</Border>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我做了你提到的改變,但沒有奏效! – 2014-10-31 06:31:25
這個「不工作」如何呈現? 「聚焦」只是沒有顏色變化,或者你有什麼異常? – Martin 2014-10-31 07:40:59
@ Mini-Con:嘗試添加缺少的'VisualStates',看看我的擴展答案。 – Martin 2014-10-31 07:57:51