Я бы справился с этим, используя MVVM, и вот пример для этого.Реализуйте IDataError Info для класса, и это будет реализовывать два свойства Error, и это [string columnName] вы можете реализовать второе свойство с вашими ошибками привязки, которые вы хотите
public class MainViewModel:ViewModelBase,IDataErrorInfo
{
public string Error
{
}
public string this[string columnName]
{
get
{
string msg=nulll;
switch(columnName)
{
case "MyProperty": //that will be your binding property
//choose your validation logic
if(MyProperty==0||MyProperty==null)
msg="My Property is required";
break;
}
return msg;
}
}
Также установите ValidateOnErrors = True в привязкетекстовое окно.здесь ColumnName - это имя свойства, которое было изменено и для которого ValidateOnErrors установлено значение true.Проверьте здесь, поставьте условия и верните сообщение, после чего вы увидите ошибки во всплывающей подсказке, когда добавите этот стиль в свои ресурсы.
<UserControl.Resources>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true" >
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="MistyRose"/>
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="1.0"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
, а вот пример текстового поля
<TextBox Text="{Binding UpdateSourceTrigger=PropertyChanged, Mode=TwoWay,
Path=PropertyName,ValidatesOnDataErrors=True}" Name="textBox1">
<Validation.ErrorTemplate>
<ControlTemplate>
</ControlTemplate>
</Validation.ErrorTemplate>
</TextBox>