我有许多利用MVVM的WPF可执行项目。视图模型实现INotifyDataErrorInfo。当这些WPF应用程序以标准方式运行时,验证按预期工作 - 显示默认的红色边框,并通过触发器更新工具提示错误详细信息。 XAML:
<TextBox Text="{Binding TextBox1Message, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
这些WPF应用程序也是MAF体系结构(https://msdn.microsoft.com/en-us/library/bb384200(v=vs.110).aspx)定义的加载项,并由主机应用程序使用。每个加载项都为主机提供内容控件,主机在其主窗口中显示该内容控件。 WPF应用程序继续正常工作,除非它由另一个进程中的窗口托管。
关于这一点的奇怪之处在于,当托管应用程序时,验证边框不会显示;但是,工具提示按预期工作。
为什么当WPF应用程序在MAF环境中运行时,验证边框无法按预期工作?