每当文本框被聚焦时,文本的边框和前景都会根据当前主题进行更改:
主题黑暗 – >边框:白色,背景:白色
我希望文本框始终有边框:白色,背景:透明
我可以在文本框未聚焦时控制这些设置,但是当它具有焦点时我无法更改背景.
文本框的XML是:
<TextBox InputScope="EmailSmtpAddress" Height="72" LostFocus="textBox1_LostFocus" GotFocus="textBox1_GotFocus" HorizontalAlignment="Left" Margin="0,62,0" Name="textBox1" Text="Enter URL here..." VerticalAlignment="Top" Width="460" TextChanged="textBox1_TextChanged" Foreground="White" Background="#005DADF5" SelectionForeground="White" BorderBrush="#DEEAEAEA" FontFamily="Tahoma" FontWeight="normal" />
解决方法
您可以使用模板覆盖默认样式:
<Style x:Key="TextBoxStyle1" targettype="TextBox"> <Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilynormal}" /> <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}" /> <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}" /> <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}" /> <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}" /> <Setter Property="SelectionBackground" Value="{StaticResource PhoneAccentBrush}" /> <Setter Property="SelectionForeground" Value="{StaticResource PhoneTextBoxSelectionForegroundBrush}" /> <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}" /> <Setter Property="Padding" Value="2" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate targettype="TextBox"> <Grid Background="Transparent"> <visualstatemanager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualState x:Name="normal" /> <VisualState x:Name="MouSEOver" /> <VisualState x:Name="disabled"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="EnabledBorder" Storyboard.TargetProperty="Visibility"> <discreteObjectKeyFrame KeyTime="0"> <discreteObjectKeyFrame.Value> <Visibility>Collapsed</Visibility> </discreteObjectKeyFrame.Value> </discreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="disabledOrReadonlyBorder" Storyboard.TargetProperty="Visibility"> <discreteObjectKeyFrame KeyTime="0"> <discreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </discreteObjectKeyFrame.Value> </discreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> <VisualState x:Name="ReadOnly"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="EnabledBorder" Storyboard.TargetProperty="Visibility"> <discreteObjectKeyFrame KeyTime="0"> <discreteObjectKeyFrame.Value> <Visibility>Collapsed</Visibility> </discreteObjectKeyFrame.Value> </discreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="disabledOrReadonlyBorder" Storyboard.TargetProperty="Visibility"> <discreteObjectKeyFrame KeyTime="0"> <discreteObjectKeyFrame.Value> <Visibility>Visible</Visibility> </discreteObjectKeyFrame.Value> </discreteObjectKeyFrame> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="disabledOrReadonlyBorder" Storyboard.TargetProperty="Background"> <discreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}" /> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="disabledOrReadonlyBorder" Storyboard.TargetProperty="BorderBrush"> <discreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxBrush}" /> </ObjectAnimationUsingKeyFrames> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="disabledOrReadonlyContent" Storyboard.TargetProperty="Foreground"> <discreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxReadOnlyBrush}" /> </ObjectAnimationUsingKeyFrames> </Storyboard> </VisualState> </VisualStateGroup> <VisualStateGroup x:Name="Focusstates"> <VisualState x:Name="Focused"> <Storyboard> <ObjectAnimationUsingKeyFrames Storyboard.TargetName="EnabledBorder" Storyboard.TargetProperty="Background"> <discreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxEditBackgroundBrush}" /> </ObjectAnimationUsingKeyFrames> <!-- COMMENT THIS OUT -----> <!--<ObjectAnimationUsingKeyFrames Storyboard.TargetName="EnabledBorder" Storyboard.TargetProperty="BorderBrush"> <discreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxEditBorderBrush}" /> </ObjectAnimationUsingKeyFrames>--> </Storyboard> </VisualState> <VisualState x:Name="Unfocused" /> </VisualStateGroup> </visualstatemanager.VisualStateGroups> <Border x:Name="EnabledBorder" Margin="{StaticResource PhonetouchTargetoverhang}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ContentControl x:Name="ContentElement" Margin="{StaticResource PhoneTextBoxInnerMargin}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" BorderThickness="0" Padding="{TemplateBinding Padding}" /> </Border> <Border x:Name="disabledOrReadonlyBorder" Margin="{StaticResource PhonetouchTargetoverhang}" Background="Transparent" BorderBrush="{StaticResource PhonedisabledBrush}" BorderThickness="{TemplateBinding BorderThickness}" Visibility="Collapsed"> <TextBox x:Name="disabledOrReadonlyContent" Background="Transparent" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontStyle="{TemplateBinding FontStyle}" FontWeight="{TemplateBinding FontWeight}" Foreground="{StaticResource PhonedisabledBrush}" IsReadOnly="True" SelectionBackground="{TemplateBinding SelectionBackground}" SelectionForeground="{TemplateBinding SelectionForeground}" Template="{StaticResource PhonedisabledTextBoxTemplate}" Text="{TemplateBinding Text}" TextAlignment="{TemplateBinding TextAlignment}" textwrapping="{TemplateBinding textwrapping}" /> </Border> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
我使用Expression Blend获取默认模板,然后通过删除(注释掉)改变了Focused VisualState中BorderBrush的ObjectAnimationUsingKeyFrames元素来修改它.将此样式应用于TextBox并将其BorderBrush更改为您的颜色.
<TextBox BorderBrush="Red" Style="{StaticResource TextBoxStyle1}" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。