WPF Validation ErrorTemplate for Custom TextBox

前端 未结 1 1917
时光取名叫无心
时光取名叫无心 2021-02-06 09:50

Branching off of this question -

When attaching a validation error template to my custom textbox like this -



        
相关标签:
1条回答
  • Alright so the way I managed to fix the issue was by removing the AdornedElement keyword and changing the error template as follows:

    <local:CustomTextBox CustomText="{Binding ViewModelProperty}">
        <Validation.ErrorTemplate>
            <ControlTemplate>
                <DockPanel>
                    <Border BorderBrush="Red" BorderThickness="1">
                        <AdornedElementPlaceholder x:Name="controlWithError"/>
                    </Border>
                    <TextBlock Foreground="Red" FontSize="20" FontFamily="Segoe UI" Margin="3,0,0,0"  MouseDown="Exclamation_MouseDown">!</TextBlock>
                </DockPanel>
            </ControlTemplate>
        </Validation.ErrorTemplate>
        <local:CustomTextBox.Style>
            <Style TargetType="{x:Type local:CustomTextBox}">
                <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="Tag" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </local:CustomTextBox.Style>
    </local:CustomTextBox>
    

    What I don't understand is why it behaves differently when using the AdornedElement keyword but works fine when binding the Tag/Tooltip using the RelativeSource. While the problem is solved, I would welcome any ideas as to why this happened.

    Thanks

    0 讨论(0)
提交回复
热议问题