Wpf 带有错误消息的元素在验证时仅部分显示
下面是我试图验证的Wpf 带有错误消息的元素在验证时仅部分显示,wpf,errortemplate,Wpf,Errortemplate,下面是我试图验证的TextBox元素的标记: <StackPanel Margin="7"> <Label x:Name="lblPrompt" Margin="7,12,7,5" Target="{Binding ElementName=txtInput}" /> <TextBox x:Name="txtInput" Margin="7,0,7,7" Validation.ErrorTemplate="{StaticResource ErrTem
TextBox
元素的标记:
<StackPanel Margin="7">
<Label x:Name="lblPrompt" Margin="7,12,7,5" Target="{Binding ElementName=txtInput}" />
<TextBox x:Name="txtInput" Margin="7,0,7,7" Validation.ErrorTemplate="{StaticResource ErrTemplate}" />
<UniformGrid Rows="1" Columns="2" HorizontalAlignment="Right" Width="Auto" Margin="7,7,7,3">
<Button x:Name="btnOK" Content="_OK" Padding="2" Margin="0,0,7,0" Background="BlanchedAlmond" Click="btnOK_Click" />
<Button x:Name="btnCancel" Content="_Cancel" Padding="2" Margin="7,0,7,0" IsCancel="True" Background="BlanchedAlmond" Click="btnCancel_Click" />
</UniformGrid>
</StackPanel>
现在,当TextBox
控件验证失败时,错误模板中定义的TextBlock
元素仅部分显示。请看这张图片:
您能建议一下如何修复它吗?StackPanel没有限制它的边界,所以将它包装到错误模板中的网格中(确实如此),这应该可以解决问题 没有。这并没有解决问题。将StackPanel放在网格面板下会产生相同的输出,而将控件直接放在网格下会导致TextBlock元素放置在TextBox元素上。
<ControlTemplate x:Key="ErrTemplate">
<StackPanel Orientation="Horizontal">
<AdornedElementPlaceholder x:Name="adorner" />
<TextBlock Text="{Binding ElementName=adorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}" Background="Red" Foreground="White" Margin="3,0,0,0" TextWrapping="Wrap" MinWidth="100" />
</StackPanel>
</ControlTemplate>