renmin  
常常被别人以为是高手

ControlTemplate 是我使用最早的Template。昨天居然在小河沟里翻船了。

问题:

手写了一个ToolTip的Template,结果无论如何也显示不出内容,ToolTip不能用Snoop调,急死我了。

 

<Image Style="{StaticResource ImageStyle}" Stretch="Fill"

                               ToolTipService.InitialShowDelay="0"

                               ToolTipService.ShowDuration="10000"

                               >

                            <Image.Resources>

                                <Style x:Key="tooltip" TargetType="ToolTip">

                                    <Setter Property="Template">

                                        <Setter.Value>

                                            <ControlTemplate >

                                                <Border x:Name="grid1">

                                                    <ContentPresenter></ContentPresenter>

                                                </Border>

                                            </ControlTemplate>

                                        </Setter.Value>

                                    </Setter>

                                </Style>

                            </Image.Resources>

                            <Image.ToolTip>

                                <ToolTip x:Name="nametip"  Style="{StaticResource tooltip}" >

                                    <StackPanel>

                                            <TextBlock x:Name="nickname" Text="{Binding Path=Name, Mode=OneWay}" />

                                        </StackPanel>

                                </ToolTip>

                            </Image.ToolTip>

                        </Image>

简单得不能再简单了.可是文字偏偏怎么也显示不出来.

最后发现

image

模版定义中少了这样的语句.

分析原因:

模版的中定义内容显示的部分是<ContentPresenter/>。它会寻找控件Content的属性,如果不指定ControlTemplate的“TargetType”,他会将控件当做“Control”类型,但是Control没有Content属性,所以内容显示不出来。

结论:

在模版中是ContentPresenter的时候一定要指定ControlTemplate的TargetType属性。

疑惑:

既然ContentPresenter找不到Content属性为什么没有异常呢?

posted on 2009-07-10 10:49    阅读(3158)  评论(3编辑  收藏  举报