在UWP中自定义半边框样式的输入框

Windows10发布已经有一阵子了,已经有一些公司上架了自己的UWP应用程序,为WindowsStore增添光彩。已经安装Windows10的用户也或多或少的安装了一些UWP的应用程序,针对这些UWP的应用程序设计来说有好有坏,好的方面体现在它们的用户体验始终是保证一致,符合Win10的产品理念,步调能够保持一致;坏的方面就是由于它们步调太过于一致导致用户体验太过雷同,进而出现一些用户会出现审美疲劳。这个博主可以理解理解,毕竟UWP应用才推出不久,接触的人也不是很多,关键一点,生态圈也很羸弱,所以没办法,或许暂时还没办法达到与Android和IPhone那样好的用户体验,但既然已入坑.NET ,那我不入地狱谁入地狱呀:)?作为.NET开发人员,那就努力写些一些漂亮的UI控件,在这个小米加步枪的开发时代里多做一个事情,希望能够为后来的开发者提供一个好的生态环境(程序猿,情怀都是骗别人的,你信吗?)。在这篇博文中,博主为新手朋友们介绍一下如何在XAML中通过对控件的样式设置来实现带半边框样式的输入框。

谈到输入框,很多朋友都会想到TextBox控件。没错,一个很不错的选择。那如何设置它的边框为半边框的样式呢?有点开发经验的朋友或许会想到通过使用LinearGradientBrush来设置TextBox的BorderBrush。好那我们就先试一下,看符合我们的要求不,代码贴上:

 1  <TextBox Grid.Row="0"  VerticalAlignment="Center" Margin="12,0,12,0">
 2             <TextBox.BorderBrush>
 3                 <LinearGradientBrush EndPoint="1,1" StartPoint="1,0">
 4                     <GradientStop Color="Transparent" Offset="0"/>
 5                     <GradientStop Color="Transparent" Offset="0.75"/>
 6                     <GradientStop Color="Green" Offset="0.75"/>
 7                     <GradientStop Color="Green" Offset="1"/>
 8                 </LinearGradientBrush>
 9             </TextBox.BorderBrush>
10         </TextBox>

来,运行起来看看效果:

怎么样?是你想要的效果吗?反正我不是很喜欢。很明显,稍微有点意思的朋友都会注意到,当TextBox获取光标后,我们希望它的背景依然是透明的,可是它不是的。所以这种设计方案我们可以Past掉了。

那好,我们来看第二张设计方案。在这种设计方案中,我们干脆来的彻底一些,直接重写TextBox的样式,来看看效果如何:代码贴上:

  1   <Page.Resources>
  2         <Style x:Key="HalfBorderTextBoxStyle" TargetType="TextBox">
  3             <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
  4             <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
  5             <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}" />
  6             <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}" />
  7             <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden" />
  8             <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
  9             <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False" />
 10             <Setter Property="BorderThickness" Value="0,0,0,2" />
 11             <Setter Property="Padding" Value="8,5" />
 12             <Setter Property="Foreground">
 13                 <Setter.Value>
 14                     <SolidColorBrush Color="White" />
 15                 </Setter.Value>
 16             </Setter>
 17             <Setter Property="Background">
 18                 <Setter.Value>
 19                     <SolidColorBrush Color="Transparent" />
 20                 </Setter.Value>
 21             </Setter>
 22             <Setter Property="BorderBrush">
 23                 <Setter.Value>
 24                     <SolidColorBrush Color="#FF8FBE19" />
 25                 </Setter.Value>
 26             </Setter>
 27             <Setter Property="SelectionHighlightColor">
 28                 <Setter.Value>
 29                     <SolidColorBrush Color="#FF8FBE19" />
 30                 </Setter.Value>
 31             </Setter>
 32             <Setter Property="Template">
 33                 <Setter.Value>
 34                     <ControlTemplate TargetType="TextBox">
 35                         <Grid>
 36                             <Grid.Resources>
 37                                 <Style x:Name="DeleteButtonStyle" TargetType="Button">
 38                                     <Setter Property="Template">
 39                                         <Setter.Value>
 40                                             <ControlTemplate TargetType="Button">
 41                                                 <Grid x:Name="ButtonLayoutGrid" BorderBrush="{ThemeResource TextBoxButtonBorderThemeBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{ThemeResource TextBoxButtonBackgroundThemeBrush}">
 42                                                     <VisualStateManager.VisualStateGroups>
 43                                                         <VisualStateGroup x:Name="CommonStates">
 44                                                             <VisualState x:Name="Normal" />
 45                                                             <VisualState x:Name="PointerOver">
 46                                                                 <Storyboard>
 47                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="GlyphElement">
 48                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
 49                                                                     </ObjectAnimationUsingKeyFrames>
 50                                                                 </Storyboard>
 51                                                             </VisualState>
 52                                                             <VisualState x:Name="Pressed">
 53                                                                 <Storyboard>
 54                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonLayoutGrid">
 55                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAccentBrush}" />
 56                                                                     </ObjectAnimationUsingKeyFrames>
 57                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="GlyphElement">
 58                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlHighlightAltChromeWhiteBrush}" />
 59                                                                     </ObjectAnimationUsingKeyFrames>
 60                                                                 </Storyboard>
 61                                                             </VisualState>
 62                                                             <VisualState x:Name="Disabled">
 63                                                                 <Storyboard>
 64                                                                     <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ButtonLayoutGrid" />
 65                                                                 </Storyboard>
 66                                                             </VisualState>
 67                                                         </VisualStateGroup>
 68                                                     </VisualStateManager.VisualStateGroups>
 69                                                     <TextBlock x:Name="GlyphElement" AutomationProperties.AccessibilityView="Raw" Foreground="{ThemeResource SystemControlForegroundChromeBlackMediumBrush}" FontStyle="Normal" FontSize="12" FontFamily="{ThemeResource SymbolThemeFontFamily}" HorizontalAlignment="Center" Text="" VerticalAlignment="Center" />
 70                                                 </Grid>
 71                                             </ControlTemplate>
 72                                         </Setter.Value>
 73                                     </Setter>
 74                                 </Style>
 75                             </Grid.Resources>
 76                             <Grid.ColumnDefinitions>
 77                                 <ColumnDefinition Width="*" />
 78                                 <ColumnDefinition Width="Auto" />
 79                             </Grid.ColumnDefinitions>
 80                             <Grid.RowDefinitions>
 81                                 <RowDefinition Height="Auto" />
 82                                 <RowDefinition Height="*" />
 83                             </Grid.RowDefinitions>
 84                             <VisualStateManager.VisualStateGroups>
 85                                 <VisualStateGroup x:Name="CommonStates">
 86                                     <VisualStateGroup.Transitions>
 87                                         <VisualTransition GeneratedDuration="0:0:0.2" To="Focused">
 88                                             <VisualTransition.GeneratedEasingFunction>
 89                                                 <ExponentialEase EasingMode="EaseIn" />
 90                                             </VisualTransition.GeneratedEasingFunction>
 91                                             <Storyboard>
 92                                                 <DoubleAnimation Duration="0:0:0.2" To="1.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LeftVerticalLine" d:IsOptimized="True" />
 93                                                 <DoubleAnimation Duration="0:0:0.2" To="1.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="RightVerticalLine" d:IsOptimized="True" />
 94                                             </Storyboard>
 95                                         </VisualTransition>
 96                                         <VisualTransition From="Focused" GeneratedDuration="0:0:0.2">
 97                                             <VisualTransition.GeneratedEasingFunction>
 98                                                 <ExponentialEase EasingMode="EaseOut" />
 99                                             </VisualTransition.GeneratedEasingFunction>
100                                             <Storyboard>
101                                                 <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LeftVerticalLine" d:IsOptimized="True" />
102                                                 <DoubleAnimation Duration="0:0:0.2" To="1" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="RightVerticalLine" d:IsOptimized="True" />
103                                             </Storyboard>
104                                         </VisualTransition>
105                                     </VisualStateGroup.Transitions>
106                                     <VisualState x:Name="Disabled">
107                                         <VisualState.Setters>
108                                             <Setter Target="BorderElement.(UIElement.Opacity)" Value="1" />
109                                         </VisualState.Setters>
110                                         <Storyboard>
111                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="HeaderContentPresenter">
112                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" />
113                                             </ObjectAnimationUsingKeyFrames>
114                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BottomLine">
115                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseLowBrush}" />
116                                             </ObjectAnimationUsingKeyFrames>
117                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
118                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledChromeDisabledLowBrush}" />
119                                             </ObjectAnimationUsingKeyFrames>
120                                         </Storyboard>
121                                     </VisualState>
122                                     <VisualState x:Name="Normal" />
123                                     <VisualState x:Name="PointerOver" />
124                                     <VisualState x:Name="Focused">
125                                         <VisualState.Setters>
126                                             <Setter Target="LeftVerticalLine.(UIElement.Opacity)" Value="1" />
127                                             <Setter Target="RightVerticalLine.(UIElement.Opacity)" Value="1" />
128                                             <Setter Target="LeftVerticalLine.(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Value="1.4" />
129                                             <Setter Target="RightVerticalLine.(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Value="1.4" />
130                                         </VisualState.Setters>
131                                         <Storyboard>
132                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BackgroundElement">
133                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextControlBackgroundFocusedOpacity}" />
134                                             </ObjectAnimationUsingKeyFrames>
135                                         </Storyboard>
136                                     </VisualState>
137                                 </VisualStateGroup>
138                                 <VisualStateGroup x:Name="ButtonStates">
139                                     <VisualState x:Name="ButtonVisible">
140                                         <Storyboard>
141                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="DeleteButton">
142                                                 <DiscreteObjectKeyFrame KeyTime="0">
143                                                     <DiscreteObjectKeyFrame.Value>
144                                                         <Visibility>Visible</Visibility>
145                                                     </DiscreteObjectKeyFrame.Value>
146                                                 </DiscreteObjectKeyFrame>
147                                             </ObjectAnimationUsingKeyFrames>
148                                         </Storyboard>
149                                     </VisualState>
150                                     <VisualState x:Name="ButtonCollapsed" />
151                                 </VisualStateGroup>
152                             </VisualStateManager.VisualStateGroups>
153                             <Border x:Name="BackgroundElement" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" Margin="{TemplateBinding BorderThickness}" Opacity="{ThemeResource TextControlBackgroundRestOpacity}" Grid.Row="1" Grid.RowSpan="1" />
154                             <Rectangle x:Name="BottomLine" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="1" VerticalAlignment="Bottom" Height="2" Fill="{TemplateBinding BorderBrush}" />
155                             <Rectangle x:Name="LeftVerticalLine" HorizontalAlignment="Left" Height="4" Margin="0,0,0,2" Grid.Row="1" Stretch="Fill" UseLayoutRounding="True" VerticalAlignment="Bottom" Width="2" RenderTransformOrigin="0.5,1" Fill="{TemplateBinding BorderBrush}">
156                                 <Rectangle.RenderTransform>
157                                     <CompositeTransform />
158                                 </Rectangle.RenderTransform>
159                             </Rectangle>
160                             <Rectangle x:Name="RightVerticalLine" HorizontalAlignment="Right" Height="4" Margin="0,0,0,2" Grid.Row="1" Stretch="Fill" UseLayoutRounding="True" VerticalAlignment="Bottom" Width="2" RenderTransformOrigin="0.5,1" Grid.ColumnSpan="2" Fill="{TemplateBinding BorderBrush}">
161                                 <Rectangle.RenderTransform>
162                                     <CompositeTransform />
163                                 </Rectangle.RenderTransform>
164                             </Rectangle>
165                             <ContentPresenter x:Name="HeaderContentPresenter" Grid.ColumnSpan="2" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}" FontWeight="Normal" Margin="0,0,0,8" Grid.Row="0" Visibility="Collapsed" x:DeferLoadStrategy="Lazy" />
166                             <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled" />
167                             <ContentControl x:Name="PlaceholderTextContentPresenter" Grid.ColumnSpan="2" Content="{TemplateBinding PlaceholderText}" Foreground="{ThemeResource ButtonBackgroundThemeBrush}" IsHitTestVisible="False" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" />
168                             <Button x:Name="DeleteButton" BorderThickness="{TemplateBinding BorderThickness}" Grid.Column="1" FontSize="{TemplateBinding FontSize}" IsTabStop="False" Margin="{ThemeResource HelperButtonThemePadding}" MinWidth="34" Grid.Row="1" Style="{StaticResource DeleteButtonStyle}" Visibility="Collapsed" VerticalAlignment="Stretch" />
169                         </Grid>
170                     </ControlTemplate>
171                 </Setter.Value>
172             </Setter>
173         </Style>
174     </Page.Resources>
175
176     <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
177         <Grid.RowDefinitions>
178             <RowDefinition Height="48"/>
179             <RowDefinition Height="*"/>
180         </Grid.RowDefinitions>
181         <TextBox Style="{StaticResource HalfBorderTextBoxStyle}" Grid.Row="0" VerticalAlignment="Center" Margin="12,0,12,0"/>
182     </Grid>

来,再跑一次你的程序,看看效果如何,我的效果是这样的:

是不是要比上次好多了呢?仔细看看左右两边,还带动画效果哦:)

写到这里,可能有点朋友会问,那如果我想让一个搜索框也是这种样式该怎么办呢?方法很简单,依然是重写它的样式,只是这些我们需要使用的控件是SearchBox(当然,你也可以使用其他类型的控件)。当你创建了它的一个样式代码段的时候你会发现这个搜索框里面放了一个TextBox和一个Button,这样就好多了,样式仿照上面的就可以了。示例代码如下所示:

  1  <Page.Resources>
  2         <Style x:Key="HalfBorderTextBoxStyle" TargetType="SearchBox">
  3             <Setter Property="BorderThickness" Value="{ThemeResource SearchBoxBorderThemeThickness}"/>
  4             <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
  5             <Setter Property="FontSize" Value="{ThemeResource SearchBoxContentThemeFontSize}"/>
  6             <Setter Property="FontWeight" Value="{ThemeResource SearchBoxContentThemeFontWeight}"/>
  7             <Setter Property="Padding" Value="{ThemeResource SearchBoxThemePadding}"/>
  8             <Setter Property="IsTabStop" Value="False"/>
  9             <Setter Property="Typography.StylisticSet20" Value="True"/>
 10             <Setter Property="Foreground">
 11                 <Setter.Value>
 12                     <SolidColorBrush Color="White"/>
 13                 </Setter.Value>
 14             </Setter>
 15             <Setter Property="Background">
 16                 <Setter.Value>
 17                     <SolidColorBrush Color="Transparent"/>
 18                 </Setter.Value>
 19             </Setter>
 20             <Setter Property="BorderBrush">
 21                 <Setter.Value>
 22                     <SolidColorBrush Color="#FF8FBE19" />
 23                 </Setter.Value>
 24             </Setter>
 25
 26             <Setter Property="Template">
 27                 <Setter.Value>
 28                     <ControlTemplate TargetType="SearchBox">
 29                         <Grid x:Name="SearchBoxGrid">
 30                             <Grid.Resources>
 31                                 <Style x:Key="SearchButtonStyle" TargetType="Button">
 32                                     <Setter Property="IsTabStop" Value="False"/>
 33                                     <Setter Property="VerticalAlignment" Value="Stretch"/>
 34                                     <Setter Property="UseSystemFocusVisuals" Value="True"/>
 35                                     <Setter Property="Template">
 36                                         <Setter.Value>
 37                                             <ControlTemplate TargetType="Button">
 38                                                 <Grid Background="Transparent">
 39                                                     <VisualStateManager.VisualStateGroups>
 40                                                         <VisualStateGroup x:Name="CommonStates">
 41                                                             <VisualState x:Name="Normal"/>
 42                                                             <VisualState x:Name="PointerOver">
 43                                                                 <Storyboard>
 44                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
 45                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverForegroundThemeBrush}"/>
 46                                                                     </ObjectAnimationUsingKeyFrames>
 47                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
 48                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonPointerOverBackgroundThemeBrush}"/>
 49                                                                     </ObjectAnimationUsingKeyFrames>
 50                                                                 </Storyboard>
 51                                                             </VisualState>
 52                                                             <VisualState x:Name="Pressed">
 53                                                                 <Storyboard>
 54                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="SearchGlyph">
 55                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedTextThemeBrush}"/>
 56                                                                     </ObjectAnimationUsingKeyFrames>
 57                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="SearchButtonBackground">
 58                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxFocusedBackgroundThemeBrush}"/>
 59                                                                     </ObjectAnimationUsingKeyFrames>
 60                                                                 </Storyboard>
 61                                                             </VisualState>
 62                                                             <VisualState x:Name="Disabled"/>
 63                                                         </VisualStateGroup>
 64                                                     </VisualStateManager.VisualStateGroups>
 65                                                     <Grid x:Name="SearchButtonBackground" Background="{TemplateBinding Background}" Margin="0,0,2,3">
 66                                                         <TextBlock x:Name="SearchGlyph" AutomationProperties.AccessibilityView="Raw" Foreground="White" FontStyle="Normal" FontSize="12"
 67                                                                    FontFamily="{ThemeResource SymbolThemeFontFamily}" HorizontalAlignment="Center" Text="" VerticalAlignment="Center"/>
 68                                                     </Grid>
 69                                                 </Grid>
 70                                             </ControlTemplate>
 71                                         </Setter.Value>
 72                                     </Setter>
 73                                 </Style>
 74
 75                                 <Style x:Key="SearchTextBoxStyle" TargetType="TextBox">
 76                                     <Setter Property="MinWidth" Value="{ThemeResource TextControlThemeMinWidth}"/>
 77                                     <Setter Property="MinHeight" Value="{ThemeResource TextControlThemeMinHeight}"/>
 78                                     <Setter Property="Foreground" Value="{ThemeResource TextBoxForegroundThemeBrush}"/>
 79                                     <Setter Property="Background" Value="{ThemeResource TextBoxBackgroundThemeBrush}"/>
 80                                     <Setter Property="BorderBrush" Value="{ThemeResource TextBoxBorderThemeBrush}"/>
 81                                     <Setter Property="SelectionHighlightColor" Value="{ThemeResource TextSelectionHighlightColorThemeBrush}"/>
 82                                     <Setter Property="BorderThickness" Value="{ThemeResource TextControlBorderThemeThickness}"/>
 83                                     <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}"/>
 84                                     <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
 85                                     <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Hidden"/>
 86                                     <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/>
 87                                     <Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="False"/>
 88                                     <Setter Property="Padding" Value="{ThemeResource TextControlThemePadding}"/>
 89
 90                                     <Setter Property="Template">
 91                                         <Setter.Value>
 92                                             <ControlTemplate TargetType="TextBox">
 93                                                 <Grid>
 94                                                     <Grid.RowDefinitions>
 95                                                         <RowDefinition Height="Auto"/>
 96                                                         <RowDefinition Height="*"/>
 97                                                     </Grid.RowDefinitions>
 98                                                     <VisualStateManager.VisualStateGroups>
 99                                                         <VisualStateGroup x:Name="CommonStates">
100                                                             <VisualState x:Name="Disabled">
101                                                                 <Storyboard>
102                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="BorderElement">
103                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBackgroundThemeBrush}"/>
104                                                                     </ObjectAnimationUsingKeyFrames>
105                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="BorderElement">
106                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledBorderThemeBrush}"/>
107                                                                     </ObjectAnimationUsingKeyFrames>
108                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentElement">
109                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
110                                                                     </ObjectAnimationUsingKeyFrames>
111                                                                     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="PlaceholderTextContentPresenter">
112                                                                         <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource TextBoxDisabledForegroundThemeBrush}"/>
113                                                                     </ObjectAnimationUsingKeyFrames>
114                                                                 </Storyboard>
115                                                             </VisualState>
116                                                             <VisualState x:Name="Normal">
117                                                                 <Storyboard>
118                                                                     <DoubleAnimation Duration="0" To="{ThemeResource TextControlBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
119                                                                     <DoubleAnimation Duration="0" To="{ThemeResource TextControlBorderThemeBrushOpacity}" Storyboard.TargetProperty="(Border.BorderBrush).Opacity" Storyboard.TargetName="BorderElement"/>
120                                                                 </Storyboard>
121                                                             </VisualState>
122                                                             <VisualState x:Name="PointerOver">
123                                                                 <Storyboard>
124                                                                     <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBackgroundThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="BorderElement"/>
125                                                                     <DoubleAnimation Duration="0" To="{ThemeResource TextControlPointerOverBorderThemeBrushOpacity}" Storyboard.TargetProperty="(Border.BorderBrush).Opacity" Storyboard.TargetName="BorderElement"/>
126                                                                 </Storyboard>
127                                                             </VisualState>
128                                                         </VisualStateGroup>
129                                                         <VisualStateGroup x:Name="ButtonStates"/>
130                                                     </VisualStateManager.VisualStateGroups>
131                                                     <Border x:Name="BorderElement" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.Row="1" Grid.RowSpan="1"/>
132                                                     <ContentPresenter x:Name="HeaderContentPresenter" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}" FontWeight="Semilight" Margin="0,4,0,4" Grid.Row="0" Visibility="Collapsed" x:DeferLoadStrategy="Lazy"/>
133                                                     <ScrollViewer x:Name="ContentElement" AutomationProperties.AccessibilityView="Raw" HorizontalScrollMode="{TemplateBinding ScrollViewer.HorizontalScrollMode}" HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}" IsTabStop="False" IsHorizontalRailEnabled="{TemplateBinding ScrollViewer.IsHorizontalRailEnabled}" IsVerticalRailEnabled="{TemplateBinding ScrollViewer.IsVerticalRailEnabled}" IsDeferredScrollingEnabled="{TemplateBinding ScrollViewer.IsDeferredScrollingEnabled}" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1" VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}" VerticalScrollMode="{TemplateBinding ScrollViewer.VerticalScrollMode}" ZoomMode="Disabled"/>
134                                                     <ContentControl x:Name="PlaceholderTextContentPresenter" Background="Transparent" Grid.ColumnSpan="2" Content="{TemplateBinding PlaceholderText}" Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}" IsHitTestVisible="False" IsTabStop="False" Margin="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Row="1"/>
135                                                 </Grid>
136                                             </ControlTemplate>
137                                         </Setter.Value>
138                                     </Setter>
139                                 </Style>
140
141                             </Grid.Resources>
142                             <Grid>
143                                 <Grid.ColumnDefinitions>
144                                     <ColumnDefinition/>
145                                     <ColumnDefinition Width="Auto"/>
146                                 </Grid.ColumnDefinitions>
147
148                                 <VisualStateManager.VisualStateGroups>
149                                     <VisualStateGroup x:Name="CommonStates">
150                                         <VisualStateGroup.Transitions>
151                                             <VisualTransition GeneratedDuration="0:0:0.2" To="Focused">
152                                                 <VisualTransition.GeneratedEasingFunction>
153                                                     <ExponentialEase EasingMode="EaseIn"/>
154                                                 </VisualTransition.GeneratedEasingFunction>
155                                                 <Storyboard>
156                                                     <DoubleAnimation Duration="0:0:0.2" To="1.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="LeftVerticalLine" d:IsOptimized="True" />
157                                                     <DoubleAnimation Duration="0:0:0.2" To="1.4" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Storyboard.TargetName="RightVerticalLine" d:IsOptimized="True" />
158                                                 </Storyboard>
159                                             </VisualTransition>
160                                             <VisualTransition From="Focused" GeneratedDuration="0:0:0.2">
161                                                 <VisualTransition.GeneratedEasingFunction>
162                                                     <ExponentialEase EasingMode="EaseOut"/>
163                                                 </VisualTransition.GeneratedEasingFunction>
164                                             </VisualTransition>
165                                         </VisualStateGroup.Transitions>
166                                         <VisualState x:Name="Disabled"/>
167                                         <VisualState x:Name="Normal"/>
168                                         <VisualState x:Name="PointerOver"/>
169                                         <VisualState x:Name="Focused">
170                                             <VisualState.Setters>
171                                                 <Setter Target="LeftVerticalLine.(UIElement.Opacity)" Value="1" />
172                                                 <Setter Target="RightVerticalLine.(UIElement.Opacity)" Value="1" />
173                                                 <Setter Target="LeftVerticalLine.(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Value="1.4" />
174                                                 <Setter Target="RightVerticalLine.(UIElement.RenderTransform).(CompositeTransform.ScaleY)" Value="1.4" />
175                                             </VisualState.Setters>
176                                         </VisualState>
177                                     </VisualStateGroup>
178                                 </VisualStateManager.VisualStateGroups>
179
180
181                                 <Rectangle x:Name="BottomLine" Grid.Column="0" Grid.ColumnSpan="2"  VerticalAlignment="Bottom" Height="2" Fill="{TemplateBinding BorderBrush}" />
182                                 <Rectangle x:Name="LeftVerticalLine" HorizontalAlignment="Left" Height="4" Margin="0,0,0,2" Grid.Row="1" Stretch="Fill" UseLayoutRounding="True" VerticalAlignment="Bottom" Width="2" RenderTransformOrigin="0.5,1" Fill="{TemplateBinding BorderBrush}">
183                                     <Rectangle.RenderTransform>
184                                         <CompositeTransform />
185                                     </Rectangle.RenderTransform>
186                                 </Rectangle>
187
188                                 <Rectangle x:Name="RightVerticalLine" Grid.Column="0" Grid.ColumnSpan="2" HorizontalAlignment="Right" Height="4" Margin="0,0,0,2" Stretch="Fill" UseLayoutRounding="True" VerticalAlignment="Bottom" Width="2" RenderTransformOrigin="0.5,1" Fill="{TemplateBinding BorderBrush}">
189                                     <Rectangle.RenderTransform>
190                                         <CompositeTransform />
191                                     </Rectangle.RenderTransform>
192                                 </Rectangle>
193                                 <TextBox x:Name="SearchTextBox" BorderThickness="0" Background="Transparent" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" InputScope="Search" MinHeight="{ThemeResource SearchBoxTextBoxThemeMinHeight}" MaxLength="2048" Padding="{TemplateBinding Padding}" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{StaticResource SearchTextBoxStyle}" TextWrapping="NoWrap" VerticalAlignment="Stretch"/>
194                                 <Button x:Name="SearchButton" AutomationProperties.AccessibilityView="Raw" Background="Transparent" Grid.Column="1" FontWeight="{ThemeResource SearchBoxButtonThemeFontWeight}" Style="{StaticResource SearchButtonStyle}"/>
195                             </Grid>
196                             <Popup x:Name="SearchSuggestionsPopup" HorizontalAlignment="Left" VerticalAlignment="Bottom">
197                                 <Border x:Name="SearchSuggestionsPopupBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" MinWidth="{ThemeResource SearchBoxSuggestionPopupThemeMinWidth}">
198                                     <Border.Resources>
199                                         <Style x:Key="SearchSuggestionListViewItemStyle" TargetType="ListViewItem">
200                                             <Setter Property="Background" Value="Transparent"/>
201                                             <Setter Property="TabNavigation" Value="Local"/>
202                                             <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
203                                             <Setter Property="Margin" Value="0"/>
204                                             <Setter Property="UseSystemFocusVisuals" Value="True"/>
205                                             <Setter Property="Template">
206                                                 <Setter.Value>
207                                                     <ControlTemplate TargetType="ListViewItem">
208                                                         <Border x:Name="OuterContainer">
209                                                             <VisualStateManager.VisualStateGroups>
210                                                                 <VisualStateGroup x:Name="CommonStates">
211                                                                     <VisualState x:Name="Normal">
212                                                                         <Storyboard>
213                                                                             <PointerUpThemeAnimation Storyboard.TargetName="ContentContainer"/>
214                                                                         </Storyboard>
215                                                                     </VisualState>
216                                                                     <VisualState x:Name="PointerOver">
217                                                                         <Storyboard>
218                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
219                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
220                                                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
221                                                                             </ObjectAnimationUsingKeyFrames>
222                                                                             <PointerUpThemeAnimation Storyboard.TargetName="ContentContainer"/>
223                                                                         </Storyboard>
224                                                                     </VisualState>
225                                                                     <VisualState x:Name="Pressed">
226                                                                         <Storyboard>
227                                                                             <PointerDownThemeAnimation TargetName="ContentContainer"/>
228                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
229                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
230                                                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
231                                                                             </ObjectAnimationUsingKeyFrames>
232                                                                         </Storyboard>
233                                                                     </VisualState>
234                                                                     <VisualState x:Name="Selected">
235                                                                         <Storyboard>
236                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
237                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
238                                                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
239                                                                             </ObjectAnimationUsingKeyFrames>
240                                                                             <PointerUpThemeAnimation Storyboard.TargetName="ContentContainer"/>
241                                                                         </Storyboard>
242                                                                     </VisualState>
243                                                                     <VisualState x:Name="PointerOverSelected">
244                                                                         <Storyboard>
245                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
246                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
247                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
248                                                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
249                                                                             </ObjectAnimationUsingKeyFrames>
250                                                                             <PointerUpThemeAnimation Storyboard.TargetName="ContentContainer"/>
251                                                                         </Storyboard>
252                                                                     </VisualState>
253                                                                     <VisualState x:Name="PressedSelected">
254                                                                         <Storyboard>
255                                                                             <PointerDownThemeAnimation TargetName="ContentContainer"/>
256                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PointerOverBorder"/>
257                                                                             <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="SelectionBackground"/>
258                                                                             <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ListViewItemContentPresenter">
259                                                                                 <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SearchBoxButtonForegroundThemeBrush}"/>
260                                                                             </ObjectAnimationUsingKeyFrames>
261                                                                         </Storyboard>
262                                                                     </VisualState>
263                                                                 </VisualStateGroup>
264                                                                 <VisualStateGroup x:Name="DisabledStates">
265                                                                     <VisualState x:Name="Enabled"/>
266                                                                     <VisualState x:Name="Disabled">
267                                                                         <Storyboard>
268                                                                             <DoubleAnimation Duration="0" To="{ThemeResource ListViewItemDisabledThemeOpacity}" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ListViewItemContentPresenter"/>
269                                                                         </Storyboard>
270                                                                     </VisualState>
271                                                                 </VisualStateGroup>
272                                                             </VisualStateManager.VisualStateGroups>
273                                                             <Grid x:Name="ContentContainer">
274                                                                 <Rectangle x:Name="PointerOverBorder" Fill="{ThemeResource SearchBoxButtonBackgroundThemeBrush}" IsHitTestVisible="False" Control.IsTemplateFocusTarget="True" Opacity="0"/>
275                                                                 <Rectangle x:Name="SelectionBackground" Fill="{ThemeResource SearchBoxButtonBackgroundThemeBrush}" Opacity="0"/>
276                                                                 <ContentPresenter x:Name="ListViewItemContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" FontWeight="{Binding FontWeight, ElementName=SearchTextBox}" FontSize="{Binding FontSize, ElementName=SearchTextBox}" FontFamily="{Binding FontFamily, ElementName=SearchTextBox}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
277                                                             </Grid>
278                                                         </Border>
279                                                     </ControlTemplate>
280                                                 </Setter.Value>
281                                             </Setter>
282                                         </Style>
283                                     </Border.Resources>
284                                     <Grid MaxHeight="{ThemeResource SearchBoxSuggestionPopupThemeMaxHeight}">
285                                         <Grid.RowDefinitions>
286                                             <RowDefinition Height="Auto"/>
287                                             <RowDefinition Height="Auto"/>
288                                             <RowDefinition/>
289                                         </Grid.RowDefinitions>
290                                         <Border x:Name="IMECandidateListContainer"/>
291                                         <Border x:Name="IMECandidateListSeparator" BorderBrush="{ThemeResource SearchBoxIMECandidateListSeparatorThemeBrush}" BorderThickness="{ThemeResource SearchBoxIMECandidateListSeparatorThemeThickness}" Grid.Row="1" Visibility="Collapsed"/>
292                                         <ListView x:Name="SearchSuggestionsList" Background="{ThemeResource TextBoxBackgroundThemeBrush}" IsTabStop="False" IsItemClickEnabled="true" Grid.Row="2">
293                                             <ListView.Resources>
294                                                 <DataTemplate x:Name="HitHighlightedTextBlock">
295                                                     <RichTextBlock x:Name="TextBlock" AutomationProperties.AccessibilityView="Raw" SelectionHighlightColor="{ThemeResource SearchBoxHitHighlightForegroundThemeBrush}" TextWrapping="Wrap" TextTrimming="WordEllipsis">
296                                                         <RichTextBlock.Resources>
297                                                             <DataTemplate x:Name="SelectedHitHighlightedRun">
298                                                                 <Run Foreground="{ThemeResource SearchBoxHitHighlightSelectedForegroundThemeBrush}"/>
299                                                             </DataTemplate>
300                                                         </RichTextBlock.Resources>
301                                                     </RichTextBlock>
302                                                 </DataTemplate>
303                                             </ListView.Resources>
304                                             <ListView.ItemTemplate>
305                                                 <DataTemplate>
306                                                     <Grid>
307                                                         <ContentControl x:Name="QuerySuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxQuerySuggestionThemeMargin}" Visibility="Collapsed" VerticalAlignment="Center"/>
308                                                         <Grid x:Name="ResultSuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxResultSuggestionThemeMargin}" Visibility="Collapsed">
309                                                             <Grid.ColumnDefinitions>
310                                                                 <ColumnDefinition Width="Auto"/>
311                                                                 <ColumnDefinition/>
312                                                             </Grid.ColumnDefinitions>
313                                                             <Grid.RowDefinitions>
314                                                                 <RowDefinition/>
315                                                                 <RowDefinition/>
316                                                             </Grid.RowDefinitions>
317                                                             <Image x:Name="ResultSuggestionImage" Height="{ThemeResource SearchBoxResultSuggestionImageThemeHeight}" Margin="{ThemeResource SearchBoxSuggestionSubcomponentThemeMargin}" Grid.RowSpan="2" Width="{ThemeResource SearchBoxResultSuggestionImageThemeWidth}"/>
318                                                             <ContentControl x:Name="ResultSuggestionText" Grid.Column="1" VerticalAlignment="Center"/>
319                                                             <ContentControl x:Name="ResultSuggestionDetailText" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center"/>
320                                                         </Grid>
321                                                         <Grid x:Name="SeparatorSuggestionTemplate" Typography.DiscretionaryLigatures="False" Margin="{ThemeResource SearchBoxSeparatorSuggestionThemeMargin}" Visibility="Collapsed">
322                                                             <Grid.ColumnDefinitions>
323                                                                 <ColumnDefinition Width="Auto"/>
324                                                                 <ColumnDefinition/>
325                                                             </Grid.ColumnDefinitions>
326                                                             <TextBlock x:Name="SeparatorSuggestionText" FontWeight="{ThemeResource SearchBoxContentThemeFontWeight}" FontSize="{ThemeResource SearchBoxContentThemeFontSize}" FontFamily="{ThemeResource ContentControlThemeFontFamily}" Margin="{ThemeResource SearchBoxSuggestionSubcomponentThemeMargin}" TextTrimming="WordEllipsis" VerticalAlignment="Center"/>
327                                                             <Border BorderBrush="{ThemeResource SearchBoxSeparatorSuggestionForegroundThemeBrush}" BorderThickness="0,1,0,0" Grid.Column="1" VerticalAlignment="Center"/>
328                                                         </Grid>
329                                                     </Grid>
330                                                 </DataTemplate>
331                                             </ListView.ItemTemplate>
332                                             <ListView.ItemContainerTransitions>
333                                                 <TransitionCollection/>
334                                             </ListView.ItemContainerTransitions>
335                                             <ListView.ItemContainerStyle>
336                                                 <StaticResource ResourceKey="SearchSuggestionListViewItemStyle"/>
337                                             </ListView.ItemContainerStyle>
338                                         </ListView>
339                                     </Grid>
340                                 </Border>
341                             </Popup>
342                         </Grid>
343                     </ControlTemplate>
344                 </Setter.Value>
345             </Setter>
346         </Style>
347
348     </Page.Resources>
349     <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
350         <Grid.RowDefinitions>
351             <RowDefinition Height="48"/>
352             <RowDefinition Height="*"/>
353         </Grid.RowDefinitions>
354         <SearchBox Margin="12,0,12,0" VerticalAlignment="Center" Style="{StaticResource HalfBorderTextBoxStyle}"/>
355
356     </Grid>

效果图如下所示:

写到这里,发现它已经差不多了吧,不知你是否对它满意???!!!

故意把后两部分代码折叠起来,因为有点小长,所以怕新手朋友们看完后鄙视我。其实你要是能看懂第二中的样式的话,第三中就不在话下了!

好了,现在已经很晚了,该去洗澡睡觉了!

代码有点小乱就不上传了,感兴趣的朋友可以自行Coding!

原文地址: stackoverflow.com

时间: 2024-10-26 11:58:40

在UWP中自定义半边框样式的输入框的相关文章

Android中自定义下拉样式Spinner

Android中自定义下拉样式Spinner 本文继续介绍android自定义控件系列,自定义Spinner控件的使用. 实现思路 1.定义下拉控件布局(ListView及子控件布局) 2.自定义SpinerPopWindow类 3.定义填充数据的Adapter 效果图 一.定义控件布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http:/

Android中自定义TextView的样式

Android自定义TextView的样式,改变背景颜色,边框粗细和颜色,角的弧度等 在res/drawable文件夹下新建一个dd.xml文件,建一个shap,在里面添加需要改变的内容 <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ef0909"></solid>//设置背景色 <strok

CAD编辑器中怎么自定义文字属性样式

想问一下大家在编辑图纸的时候有没有遇到过这样的问题,就是在CAD绘图的时候,要给编辑的图纸中做一下特别的说明,但是CAD编辑器中原有的文字样式部署那么的符合,拿在CAD编辑器中怎么自定义文字属性样式?具体要怎么来进行操作?下面小编就来教教大家具体的操作,有兴趣的朋友可以来看看. 第一步:首先,打开电脑,看一下有电脑上有没有安装CAD编辑器.如果没有在电脑中打开一个浏览器,搜索框中搜索迅捷CAD编辑器,接着点击进入官网,点击下载安装最新版本的CAD编辑器. 第二步:然后在将刚刚安装完成的CAD编辑

bootstrap-table 使用遇到的问题总结:1.右上角button样式自定义;2.右上角引用图标自定义;3.表头/表格内容显示不对齐;4.自定义设置表头及表格边框样式

问题一:右上角button样式自定义 方法: //修改bootstrap-table右上角按钮样式 $(".table-box .columns-right button").removeClass("btn-secondary").css({"backgroundColor": "#fafafa","border": "1px solid #c2c2c2","color&qu

css中的边框样式

在盒子模型中,盒子的边框是其重要的样式,通过边框我们可以很方便地看出盒子的长宽以及大小.边框的特性可以通过边框线,边框的宽度及颜色来呈现. 1,边框线 边框线指的是边框线条的样式,包括实线,虚线,点划线等.其具体的使用如下: border-style : none | hidden | dotted | dashed | solid | double | groove |ridge | inset  | outset 例:div { width:300px; height:100px; bord

UWP中实现自定义标题栏

UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http://www.atmarkit.co.jp/ait/articles/1510/14/news022.html 看了下本想着翻译过来分享,但有些地方说的不是特别明确,所以自己实现了下,结合自己的体会总结了这篇文章. 0x01 UWP中的标题栏 一个普通的UWP窗口如下图所示: 我们可以通过两种方式获

[转]Android中自定义样式与View的构造函数中的第三个参数defStyle的意义

转自:http://www.cnblogs.com/angeldevil/p/3479431.html Android中自定义样式与View的构造函数中的第三个参数defStyle的意义 零.序 一.自定义Style 二.在XML中为属性声明属性值 1. 在layout中定义属性 2. 设置Style 3. 通过Theme指定 三.在运行时获取属性值 1. View的第三个构造函数的第三个参数defStyle 2. obtailStyledAttributes 3. Example 四.结论与代

Android中自定义Activity和Dialog的位置大小背景和透明度等demo

1.自定义Activity显示样式 先在res/values下建colors.xml文件,写入: [xhtml] view plaincopy <?xml version="1.0" encoding="utf-8"?> <resources> <!-- 设置透明度为56%(9/16)左右 --> <color name="transparent">#9000</color> </

Android中自定义Activity和Dialog的位置大小背景和透明度等

1.自定义Activity显示样式 先在res/values下建colors.xml文件,写入: view plainprint? 1. <?xml version="1.0" encoding="utf-8"?>   2. <resources>   3.     <!-- 设置透明度为56%(9/16)左右 -->   4.     <color name="transparent">#9000