【发布时间】:2016-04-26 20:52:37
【问题描述】:
我正在研究一种在新行上显示红色边框、错误图像和错误文本的文本框样式。 如果它在文本框底部有空间,如下图所示。
如果验证文本框下方有其他控件,则我看不到图标和错误文本。
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<StackPanel>
<Border x:Name="Bd" SnapsToDevicePixels="true" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<ScrollViewer VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<Grid x:Name="errorBlock" Visibility="Hidden" Margin="0,2,0,-30" Z>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="Error.png" Height="14" Width="14"
HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBlock Grid.Column="1" Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type TextBox}},Path=(Validation.Errors)[0].ErrorContent}" />
</Grid>
</StackPanel>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Validation.HasError" Value="True"/>
<Condition Property="IsEnabled" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" TargetName="errorBlock" Value="Visible" />
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
【问题讨论】:
标签: wpf validation templates styles