每当文本框被聚焦时,文本的边框和前景都会根据当前主题进行更改:
我希望文本框始终有边框:白色,文字:白色,背景:透明
我可以在文本框未聚焦时控制这些设置,但是当它具有焦点时我无法更改背景.
文本框的XML是:
<TextBox InputScope="EmailSmtpAddress" Height="72" LostFocus="textBox1_LostFocus" GotFocus="textBox1_GotFocus" HorizontalAlignment="Left" Margin="0,62,0,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] 举报,一经查实,本站将立刻删除。