自定义控件绑定查询

时间:2013-04-13 06:18:02

标签: silverlight windows-phone-8

我通过继承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;为什么堆栈面板中的文本块文本是否为红色。有人可以用简单的词语解释我是如何以及为什么会这样做的?

这是输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

那是因为

<mycontrol:MyCustomControl Height="100" Width="400" 
                           Foreground="Red"
                           IconSource="/Assets/ApplicationIcon.png">
然后

Foreground会在元素树下继承到StackPanelTextBlockButton,但因为Button已设置Foreground显然它不是红色的。