No, as you have already discovered, if you define a style without an x:Key attribute and with the TargetType set to TextBlock in your App.xaml, it will apply to ALL TextBlock elements in your application including TextBlock elements that reside in other
control's templates.
You should set an x:Key for the style and reference if from all TextBlocks that you want to use this style using the StaticResource or DynamicResource markup extension, or you could define your own custom TextBlock element and style this one implicitly:
namespace WpfApplication6
{
public class MyTextBlock : System.Windows.Controls.TextBlock
{
}
}
<Application x:Class="WpfApplication6.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication6"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="{x:Type local:MyTextBlock}">
<Setter Property="Foreground" Value="Green"/>
</Style>
</Application.Resources>
</Application>
<local:MyTextBlock Text="text..."></local:MyTextBlock>