Consider the following simple XAML:
<TextBlock x:Class="MyTextBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Foreground="Red">
</TextBlock>
And the associated C# code:
public partial class MyTextBlock : TextBlock
{
public MyTextBlock()
{
}
}
Why does the Foreground="Red"
part not work when I then do <MyTextBlock Text="Foo"/>
in my application? I know there are plenty of other ways to do it in code, but I have trouble understanding what is happening exactly here.
I have also tried the following XAML:
<TextBlock x:Class="MyTextBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Red"/>
</Style>
</TextBlock.Style>
</TextBlock>
And finally this one:
<TextBlock x:Class="MyTextBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<TextBlock.Resources>
<Style x:Key="MyTextBlockStyle" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Red"/>
</Style>
</TextBlock.Resources>
<TextBlock.Style>
<DynamicResource ResourceKey="MyTextBlockStyle"/>
</TextBlock.Style>
</TextBlock>
Again, neither of these appear to apply the style. Why is that? Is there a way to declare some kind of default style for the root element in XAML?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…