Gab*_*abe 2 c# silverlight xaml
我想更改DatePicker控件上焦点状态的边框颜色。我查看了默认样式模板,但没有看到VisualStateManager.
我唯一看到的是一个原始控件,TextBox如下所示:
<controlsPrimitives:DatePickerTextBox x:Name="TextBox" SelectionBackground="{TemplateBinding SelectionBackground}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}" Grid.Column="0" />
Run Code Online (Sandbox Code Playgroud)
如何更改为边界的焦点状态的颜色DatePicker......我没有问题,改变这种颜色的TextBox,ComboBox和CheckBox控制。
请帮忙!
你是对的,DatePicker控件没有VisualStateManager. 请注意,这是可以添加的状态组和聚焦/未聚焦状态的DatePicker,但不会是最好的方法在这里。
该模板用于DatePicker控制包含一个DatePickerTextBox控制,其中,根据MSDN,“表示的文本输入DatePicker”。
查看 的模板DatePickerTextBox,我们发现它有一个FocusStates状态组,以及Unfocused和Focused状态的定义。我们还发现这一行:
<Border x:Name="FocusVisual" BorderBrush="#FF6DBDD1" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" IsHitTestVisible="False" Opacity="0"/>
Run Code Online (Sandbox Code Playgroud)
如您所见,默认的“聚焦颜色”是#FF6DBDD1. 的Focused状态将此边框DatePickerTextBox的Opacity属性设置为1。
要更改状态的边框颜色Focused,您可以创建此模板的副本,替换#FF6DBDD1为您想要的颜色。然后,创建DatePicker模板的副本,该副本应指定其中DatePickerTextBox包含的内容应使用您修改后的模板。
或者,您可以创建DatePickerTextBox模板的副本,调整边框颜色,然后将此模板放置在TargetType设置为的样式中DatePickerTextBox:
<Style x:Key="MyStyle1" TargetType="DatePickerTextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DatePickerTextBox">
<!-- Modified template for DatePickerTextBox goes here -->
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
希望这对你有用!
编辑:DatePickerTextBoxMSDN
上提供了大多数控件的默认样式和模板的默认模板。但是(无论出于何种原因),不是。如果您有 Expression Blend 的副本(如果您正在处理控件的外观,我强烈推荐它;它非常宝贵——在此处下载免费试用版),您可以执行以下操作:DatePickerTextBox
右键单击 a DatePicker,单击“编辑模板 -> 编辑副本...”。您将DatePickerTextBox在“对象和时间轴”面板中看到。右键单击它,再次单击“编辑模板-> 编辑副本...”。然后,您可以右键单击“对象和时间轴”面板中的模板,然后单击“查看 XAML”。
再说一次,如果你正在做这样的工作,我不能高度推荐 Blend。从长远来看,它将为您节省大量时间(并且您将学习大量有关 XAML、样式、模板、它们如何组合在一起等)。但是,如果您无权访问它,这里是DatePickerTextBox控件的默认模板:
<Style x:Key="DatePickerTextBoxStyle" TargetType="System_Windows_Controls_Primitives:DatePickerTextBox">
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="System_Windows_Controls_Primitives:DatePickerTextBox">
<Grid x:Name="Root">
<Grid.Resources>
<SolidColorBrush x:Key="WatermarkBrush" Color="#FFAAAAAA"/>
</Grid.Resources>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0"/>
<VisualTransition GeneratedDuration="0:0:0.1" To="MouseOver"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="ContentElement">
<SplineColorKeyFrame KeyTime="0" Value="#FF99C1E2"/>
</ColorAnimationUsingKeyFrames>
<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="ContentElement2">
<SplineColorKeyFrame KeyTime="0" Value="#FF99C1E2"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="WatermarkStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Unwatermarked"/>
<VisualState x:Name="Watermarked">
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="ContentElement"/>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Watermark"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Unfocused"/>
<VisualState x:Name="Focused">
<Storyboard>
<DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisual"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Opacity="1">
<Grid x:Name="WatermarkContent" Background="{TemplateBinding Background}">
<Border x:Name="ContentElement" BorderBrush="#FFFFFFFF" BorderThickness="1" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}"/>
<Border x:Name="ContentElement2" BorderBrush="#FFFFFFFF" BorderThickness="1">
<ContentControl x:Name="Watermark" Background="{TemplateBinding Background}" Content="{TemplateBinding Watermark}" Foreground="{StaticResource WatermarkBrush}" FontSize="{TemplateBinding FontSize}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" IsTabStop="False" Opacity="0" Padding="2" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<Border x:Name="FocusVisual" BorderBrush="#FF6DBDD1" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" IsHitTestVisible="False" Opacity="0"/>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
为篇幅道歉,非常感谢这个线程(有同样的问题)。
| 归档时间: |
|
| 查看次数: |
10164 次 |
| 最近记录: |