C# WPF日期选择器内边框停用
我尝试在我的想法中设计一个wpf日期选择器,但是在停用内部边界时遇到了一些麻烦。 当我将鼠标悬停在日期选择器上或单击它时,输入区域周围会出现浅蓝色边框。你可以在截图上清楚地看到它。 如何停用此边界C# WPF日期选择器内边框停用,c#,wpf,datepicker,border,C#,Wpf,Datepicker,Border,我尝试在我的想法中设计一个wpf日期选择器,但是在停用内部边界时遇到了一些麻烦。 当我将鼠标悬停在日期选择器上或单击它时,输入区域周围会出现浅蓝色边框。你可以在截图上清楚地看到它。 如何停用此边界 您可以修改默认的DatePicker控件模板,使控件具有唯一的外观。有关详细信息,请参见。覆盖DatePickerTextBox的模板并删除使蓝色边框出现的视觉状态转换: <DatePicker> <DatePicker.Resources> <S
您可以修改默认的DatePicker控件模板,使控件具有唯一的外观。有关详细信息,请参见。覆盖DatePickerTextBox的模板并删除使蓝色边框出现的视觉状态转换:
<DatePicker>
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DatePickerTextBox}">
<Grid>
<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" />
</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="PART_Watermark"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup x:Name="FocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0"/>
</VisualStateGroup.Transitions>
<VisualState x:Name="Unfocused"/>
<VisualState x:Name="Focused" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1" Padding="{TemplateBinding Padding}">
<Grid x:Name="WatermarkContent" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<Border x:Name="ContentElement" BorderBrush="#FFFFFFFF" BorderThickness="1"/>
<Border x:Name="watermark_decorator" BorderBrush="#FFFFFFFF" BorderThickness="1">
<ContentControl x:Name="PART_Watermark" Focusable="False" IsHitTestVisible="False" Opacity="0" Padding="2"/>
</Border>
<ScrollViewer x:Name="PART_ContentHost" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DatePicker.Resources>
</DatePicker>
不,没有更简单的方法:尝试使用Blend for Visual Studio提取样式。拿一个战利品看看里面是什么样式的,试着禁用边界或者给它们一个不同的颜色。这也可能是一个更难设计的Chrome东西。不幸的是,由于我的工作环境,我不得不使用Visual Studio Express。据我所知,不可能在express下使用blend?我发现了如何在没有blend的情况下提取样式。按照下面的思路:正如我正确理解的那样,我想要去掉的蓝色边框是datepickertextbox的一部分。因此,我以默认样式向该标记添加了一个边界笔刷。这仅设置文本框周围的边框,并保留蓝色边框的原样。在我看来,这是疯狂和不直观的。但它是有效的。谢谢!我将尝试将其放入静态资源中,以保持xaml更干净