我有一个组合框,我需要编辑它的错误模板,以便在出现验证错误时显示红色边框。
我使用以下风格
<Style TargetType="{x:Type ComboBox}" >
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel>
<Border BorderBrush="Red" BorderThickness="3">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="FontFamily" Value="Segoe UI" />
<Setter Property="FontSize" Value="12" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
发生验证错误时,边框永远不会显示。出了什么问题?
答案 0 :(得分:4)
您发布的Style
作品。您应该检查绑定,是否已将ValidatesOnDataErrors=True
和ValidatesOnExceptions=True
添加到SelectedValue
的绑定中?
答案 1 :(得分:1)
在没有停靠面板的情况下输入codetry,这是无用的,因为它包装了一个元素。但是,我不知道如果用带边框包装文本框是有意义的,因为它已经有了边框!您应该尝试直接更改其边框的颜色。您可以尝试再次使用面板,但然后将边框放在面板周围,即:
Border BorderBrush =“Red”BorderThickness =“3”
DockPanel中
AdornedElement
这更有意义,因为包装面板没有自己的边框。
答案 2 :(得分:1)
使用此。
<Style x:Key="textBoxStyle" TargetType="{x:Type telerik:RadMaskedTextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
<Setter Property="Control.BorderBrush" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
答案 3 :(得分:1)
我不喜欢这里的任何回复。简单地说,如何使用Blend更改ComboBox的错误模板的边框颜色?在ComboBox的现有边界周围绘制另一个边框是不可接受的。我已经弄清楚如何在Blend中创建ControlTemplate而不是验证模板。
我已经接近试图让它看起来像我改变了实际的边框颜色,但那不是我真正想要的。建议?为了使它复杂一点,我想在控件的右边框之外显示一个红色星号。
下面的代码是一个近距离尝试,但它实际上是在ComboBox中绘制一个边框,如果你仔细观察,你可以看到当与ComboBox边框结合时边框宽2像素:
<DockPanel Name="myDockPanel">
<AdornedElementPlaceholder>
<Border BorderBrush="Blue" BorderThickness="1" CornerRadius="2" />
</AdornedElementPlaceholder>
<TextBlock Text="*" FontWeight="Bold" FontSize="14" Foreground="Red" DockPanel.Dock="Left" ToolTip="{Binding .CurrentItem}" />
</DockPanel>
答案 4 :(得分:0)
我搜索了更多内容,并根据另一篇文章提出了一个解决方案:WPF - How to apply style to AdornedElementPlaceholder's AdornedElement?
<!-- This works -->
<ComboBox Name="comboBox1" Style="{StaticResource NewComboBoxStyle}" Validation.ErrorTemplate="{StaticResource comboBoxValidationTemplate}" />
<SolidColorBrush x:Key="MainBorderBrush">#FF91B3FF</SolidColorBrush>
<Style x:Key="NewComboBoxStyle" TargetType="{x:Type ComboBox}" BasedOn="{StaticResource myErrorTemplate}">
<Setter Property="BorderBrush" Value="{DynamicResource MainBorderBrush}" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="BorderBrush" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
<!-- Sets ToolTip when Validation.HasError is True. -->
<Style TargetType="Control" x:Key="myErrorTemplate">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
<ControlTemplate x:Key="comboBoxValidationTemplate">
<DockPanel Name="myDockPanel">
<AdornedElementPlaceholder/>
<TextBlock Text="*" FontWeight="Bold" FontSize="14" Foreground="Red" DockPanel.Dock="Left" ToolTip="{Binding .CurrentItem}" />
</DockPanel>
</ControlTemplate>