現在、複数のタブ項目を含むタブ コントロールがあり、各タブ項目には異なるカスタム ユーザー コントロールが含まれています。関連するタブに検証エラーが含まれている場合、タブ ヘッダーを赤くしたいと思います。私の検証は、適切なバインディングで ValidationRules として実装されています (IDataError または別の検証アプローチに移行することは、実行可能な解決策ではありません)。各タブ固有のコントロールは、バブリング ValidationErrorsEvent を通じてエラーを追跡し、カウントを公開します。
現在、タブ固有のコントロールで x:Name と TabItem ヘッダーの ElementName を使用して、タブ固有のコントロールによって公開されたカウントをヘッダーのテキストの色にバインドしています (コンバーターを介して)。
<TabControl>
<TabItem>
<TabItem.Header>
<TextBlock Text="Tab 1" Foreground="{Binding Errors.Count, ElementName=_tabOne, Converter={StaticResource ErrorCountToColorConverter}}" />
</TabItem.Header>
<AdornerDecorator>
<my:CustomTabOneControl x:Name="_tabOne" />
</AdornerDecorator>
</TabItem>
<TabItem>
<TabItem.Header>
<TextBlock Text="Tab 2" Foreground="{Binding Errors.Count, ElementName=_tabTwo, Converter={StaticResource ErrorCountToColorConverter}}" />
</TabItem.Header>
<AdornerDecorator>
<my:CustomTabTwoControl x:Name="_tabTwo" />
</AdornerDecorator>
</TabItem>
</TabControl>
WPF タブ コントロールの遅延により、各タブの検証はタブが開かれるまで行われません。そのため、無効なフィールドを含むタブのヘッダーは、タブが開かれるまで赤くなりません (その後は正しいままです)。
この問題を解決する方法、または同じタブの強調表示を実現する別の方法を提案できる人はいますか?