этот вопрос может вам помочь. Он показывает, как переопределить неявный стиль.
Хорошо, я понимаю вашу проблему, и у меня нет прямого решения, но в любом случае я расскажу вам, как я справляюсь с такими вещами:
Вы знаете, что неявные стили ограничены, что означает:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontFamily" Value="MyFancyFont"/>
</Style>
</Grid.Resources>
<TextBlock>textblock with MyFancyFont</TextBlock>
</Grid>
<TextBlock>textblock with normal font</TextBlock>
Я обычно стараюсь избегать такого неявного стиля для TextBlock в ресурсах моего главного окна. Вместо этого я мог бы сделать:
<Application bunch="ofStuff">
<Application.Resources>
<Style TargetType="{x:Type TextBlock}" x:Key="TextBlockStandardStyle">
<Setter Property="FontFamily" Value="MyFancyFont"/>
</Style>
</Application.Resources>
</Application>
затем в подрайонах, где этот стиль может быть неявным и не причинять никакого вреда, я напишу:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource TextBlockStandardStyle}"/>
</Grid.Resources>
<TextBlock>textblock with MyFancyFont</TextBlock>
</Grid>
таким образом я могу оценивать вещи так, как я хочу. Возможно, этот подход позволяет пропустить неявный стиль для дерева, чтобы вы могли использовать свои триггеры!