我通过继承ContentControl来创建自定义控件。下面是Generic.xaml中的XAML代码
<Style TargetType="local:MyCustomControl">
<Setter Property="Background" Value="YellowGreen"></Setter>
<Setter Property="IconSource" Value="/Themes/icon.png"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyCustomControl">
<Border BorderBrush="White" BorderThickness="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{TemplateBinding IconSource}" Stretch="None"></Image>
<Border Background="{TemplateBinding Background}" Grid.Column="1">
<ContentPresenter x:Name="ContentContainer"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}">
</ContentPresenter>
</Border>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在我的应用程序中,我以这种方式使用了自定义控件:
<mycontrol:MyCustomControl Height="100" Width="400"
Foreground="Red"
IconSource="/Assets/ApplicationIcon.png">
<mycontrol:MyCustomControl.Content>
<StackPanel>
<TextBlock Text="Some Text Content Here"/>
<Button Content="Test Button" Foreground="Pink" Background="Black"/>
</StackPanel>
</mycontrol:MyCustomControl.Content>
</mycontrol:MyCustomControl>
我不明白如何&amp;为什么堆栈面板中的文本块文本是否为红色。有人可以用简单的词语解释我是如何以及为什么会这样做的?
这是输出:
答案 0 :(得分:0)
那是因为
<mycontrol:MyCustomControl Height="100" Width="400"
Foreground="Red"
IconSource="/Assets/ApplicationIcon.png">
然后 Foreground
会在元素树下继承到StackPanel
,TextBlock
和Button
,但因为Button
已设置Foreground
显然它不是红色的。