为什么工具提示在绑定更改时不更新其内容?

问题描述:

我已经写了下面的XAML代码:为什么工具提示在绑定更改时不更新其内容?

<Window x:Class="WpfApplication3.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="200" Width="200"> 
    <StackPanel> 
     <ListBox Name="listBox"> 
      <ListBoxItem Content="item1" /> 
      <ListBoxItem Content="item2" /> 
      <ListBoxItem Content="item3" /> 
     </ListBox> 

     <TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}" ToolTip="{Binding Content}" /> 

     <TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}"> 
      <TextBlock.ToolTip>  
       <ToolTip Content="{Binding Content}"/>    
      </TextBlock.ToolTip> 
     </TextBlock> 
    </StackPanel> 
</Window> 

为什么第一个提示总是有它的父TextBlock相同的文字和第二从未改变,当我在listBox改变所选择的项目它的内容?

在第二个示例中,您将TextBlock的ToolTip设置为ToolTip。因此,您实际上将ToolTip的内容设置为另一个工具提示。这些将与第一个相同。

<TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}" ToolTip="{Binding Content}" /> 
<TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}"> 
    <TextBlock.ToolTip>  
     <Binding Path="Content"/>    
    </TextBlock.ToolTip> 
</TextBlock> 

而这些将几乎是一样的最后

<Window.Resources> 
    <ToolTip x:Key="MyToolTip" Content="{Binding Content}"/> 
</Window.Resources> 

<TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}" ToolTip="{Binding Source={StaticResource MyToolTip}}" /> 
<TextBlock DataContext="{Binding ElementName=listBox, Path=SelectedItem}" Text="{Binding Content}"> 
    <TextBlock.ToolTip>  
     <ToolTip Content="{Binding Content}"/>    
    </TextBlock.ToolTip> 
</TextBlock> 
+0

你能告诉我如何设置工具提示的的ContentTemplate在第一种情况? – Poma 2010-11-16 01:08:37