none
ToolTip数据绑定不上,Why? RRS feed

  • 问题

  • 1、这样数据绑定可以绑定上:

      
    <ToolTipService.ToolTip>
         <ToolTip Content="{Binding Caption}" />
    </ToolTipService.ToolTip>

    2、但是这样数据就绑定不上了。

                                                 

         <ToolTipService.ToolTip>
                                    <ToolTip>
                                        <ToolTip.ContentTemplate>
                                            <DataTemplate>
                                                <StackPanel >
                                                    <TextBlock Text="标题"></TextBlock>
                                                    <TextBlock Text="名称"></TextBlock>
      <TextBlock Text="{Binding Caption}"></TextBlock>
                                                </StackPanel>
                                            </DataTemplate>
                                        </ToolTip.ContentTemplate>

                                    </ToolTip>
               </ToolTipService.ToolTip>

    问题:为什么使用了“</ToolTip.ContentTemplate>”,数据就绑定不上了呢???     Why???


    Science and technology is my lover.

    2012年8月29日 4:18

答案

  • 注意你使用的ContentTemplate,这是在指定Conent的显示模板。

    看看下面的两个例子(我定义了一个class Member,拥有两个公共属性Name和Address,初始化了一个对象,并将其给Label.Context赋值):

    第一个:

            <Label Name="label" Content="{Binding Name}">
                <Label.ToolTip>
                    <ToolTip Content="{Binding}">
                        <ToolTip.ContentTemplate>
                            <DataTemplate DataType="local:Member">
                                <StackPanel>
                                    <TextBlock Text="{Binding Path=Address}"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ToolTip.ContentTemplate>
                    </ToolTip>
                </Label.ToolTip>
            </Label>

    第二个:

            <Label Name="label" Content="{Binding Name}">
                <Label.ToolTip>
                    <ToolTip Content="{Binding Address}">
                        <ToolTip.ContentTemplate>
                            <DataTemplate DataType="local:Member">
                                <StackPanel>
                                    <TextBlock Text="{Binding}"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ToolTip.ContentTemplate>
                    </ToolTip>
                </Label.ToolTip>
            </Label>

    现在就很容易理解你的问题了,Tooltip的Content属性是空的,无论怎么设计该Content的展现形式,当然都是空白。


    Wanpeng wanpeng.ones@gmail.com

    2012年8月29日 6:03

全部回复

  • 注意你使用的ContentTemplate,这是在指定Conent的显示模板。

    看看下面的两个例子(我定义了一个class Member,拥有两个公共属性Name和Address,初始化了一个对象,并将其给Label.Context赋值):

    第一个:

            <Label Name="label" Content="{Binding Name}">
                <Label.ToolTip>
                    <ToolTip Content="{Binding}">
                        <ToolTip.ContentTemplate>
                            <DataTemplate DataType="local:Member">
                                <StackPanel>
                                    <TextBlock Text="{Binding Path=Address}"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ToolTip.ContentTemplate>
                    </ToolTip>
                </Label.ToolTip>
            </Label>

    第二个:

            <Label Name="label" Content="{Binding Name}">
                <Label.ToolTip>
                    <ToolTip Content="{Binding Address}">
                        <ToolTip.ContentTemplate>
                            <DataTemplate DataType="local:Member">
                                <StackPanel>
                                    <TextBlock Text="{Binding}"></TextBlock>
                                </StackPanel>
                            </DataTemplate>
                        </ToolTip.ContentTemplate>
                    </ToolTip>
                </Label.ToolTip>
            </Label>

    现在就很容易理解你的问题了,Tooltip的Content属性是空的,无论怎么设计该Content的展现形式,当然都是空白。


    Wanpeng wanpeng.ones@gmail.com

    2012年8月29日 6:03
  • 实际上关于你的问题,很容易引申到另一个问题:ControlTemplate和DataTemplate的区别:

    看这个例子:

            <Label Name="label" Content="{Binding Name}">
                <Label.ToolTip>
                    <ToolTip>
                        <ToolTip.Template>
                            <ControlTemplate>
                                <TextBlock Text="{Binding Address}" />
                            </ControlTemplate>
                        </ToolTip.Template>
                    </ToolTip>
                </Label.ToolTip>
            </Label>

    简单地说:ControlTemplate是在描述控件的表现形式,而DataTemplate则是关注数据的表现形式。


    Wanpeng wanpeng.ones@gmail.com

    2012年8月29日 6:07