Xaml 带有文本框和文本块的自定义控件
我想构建一个验证文本框,它将是一个普通的UWPXaml 带有文本框和文本块的自定义控件,xaml,uwp,custom-controls,uwp-xaml,Xaml,Uwp,Custom Controls,Uwp Xaml,我想构建一个验证文本框,它将是一个普通的UWPTextBox包装在StackPanel中,它还包含一个TextBlock。其目的是当出现验证错误时,可以在文本框下方显示验证消息 我知道我可以通过创建一个自定义控件来实现这一点,但这需要我实现所有需要的属性,并创建一组依赖属性,等等 我希望有一种更简单的方法,我可以完全派生文本框,但可以覆盖文本框的显示模板,并在其下方包含一个标签。使用内置的基于IDataErrorInfo的验证机制并为文本框的validation.ErrorTemplate定义一
TextBox
包装在StackPanel
中,它还包含一个TextBlock
。其目的是当出现验证错误时,可以在文本框下方显示验证消息
我知道我可以通过创建一个自定义控件来实现这一点,但这需要我实现所有需要的属性,并创建一组依赖属性,等等
我希望有一种更简单的方法,我可以完全派生文本框,但可以覆盖文本框的显示模板,并在其下方包含一个标签。使用内置的基于IDataErrorInfo的验证机制并为文本框的validation.ErrorTemplate定义一个控件模板,您可以在XAML中获得大部分方法。这里有一篇很好的文章 下面是上面链接中文章中的XAML,也可以查看关于WPF内置验证的讨论
您熟悉TemplatedControl吗?请检查来自社区工具包的属性。由于答案符合OP的要求,并且使用内置机器,而不必自己滚动,因此不确定否决票是为了什么。
<Style TargetType="{x:Type Label}">
<Setter Property="Margin" Value="5,0,5,0" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Margin" Value="0,2,40,2" />
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="true">
<Border Background="OrangeRed" DockPanel.Dock="right" Margin="5,0,0,0"
Width="20" Height="20" CornerRadius="5"
ToolTip="{Binding ElementName=customAdorner,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}">
<TextBlock Text="!" VerticalAlignment="center" HorizontalAlignment="center"
FontWeight="Bold" Foreground="white" />
</Border>
<AdornedElementPlaceholder Name="customAdorner" VerticalAlignment="Center" >
<Border BorderBrush="red" BorderThickness="1" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>