2010-02-06 119 views
8

我只有两周进入WPF,所以这可能是一个微不足道的问题。我有一个集合“CellList”,其中有几个属性我想绑定到ToolTip,所以当我将鼠标悬停在当前实例CellList的标签上时,会显示该信息。我怎么做?我理解简单的绑定,也许这也许是简单的绑定,但我无法将头围住它。以下是我的XAML标签。有人可以向我解释我该如何实现这一点。WPF工具提示绑定

<HierarchicalDataTemplate> 
     <ListBox ItemsSource="{Binding CellList}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
       <Label Content=" " Height="20" Width="15" Background="{Binding Path=ExptNameBkg, Converter={StaticResource ExptNameToBrushConverter}}"             BorderBrush="Black" BorderThickness="1" > 
        </Label> 
       </DataTemplate>          
      </ListBox.ItemTemplate> 
     </ListBox> 
</HierarchicalDataTemplate> 

谢谢。

回答

15
<Label Content={Binding Path=Id} ToolTip={Binding Path=Name}/> 

只是试试这个

+1

什么会我更详尽的提示,虽然做的?一个在其中显示多个属性。 – Nathan 2010-02-06 06:00:28

+1

http://stackoverflow.com/questions/1825765/wpf-show-data-from-multiple-datacontexts-in-tooltip-of-itemscontrol 指这个链接,将帮助你 – 2010-02-06 06:29:01

19

棘手的约ToolTip s是一个ToolTip是你有控制关联的对象,而不是控件的可视化树的一部分。所以,你可以不填充它,你会填充在视觉树事物的方式,比如:你必须做的事情

<TextBox.ToolTip> 
    <StackPanel> 
     ...put bound controls here 
    </StackPanel> 
</TextBox.ToolTip> 

相反,是创建一个工具提示的具体实例,并为其分配一个风格,设置它的DataContext(非常重要;这就是如何绑定到其“展示目标”数据源的属性,即显示工具提示的控件)及其Template。然后将ToolTip的可视化树(包括绑定)放入模板中。最后,请参考您的控件中的ToolTip

所以,这里有一个TextBoxBinding并验证:

<TextBox ToolTip="{StaticResource ErrorToolTip}"> 
    <TextBox.Text> 
     <Binding Source="SourceProperty"> 
      <Binding.ValidationRules> 
       <DataErrorValidationRule/> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

它使用该ToolTip

<ToolTip x:Key="ErrorToolTip" Style="{StaticResource ErrorToolTipStyle}"/> 

而且ToolTip使用这种风格,从的了ValidationError属性获取其内容TextBox的约束力来源:

<Style x:Key="ErrorToolTipStyle" TargetType="{x:Type ToolTip}"> 
    <Setter Property="OverridesDefaultStyle" Value="true"/> 
    <Setter Property="HasDropShadow" Value="True"/> 
    <Setter Property="DataContext" Value="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ToolTip"> 
       <Border 
        Name="Border" 
        BorderThickness="1" 
        BorderBrush="LightGray"> 
        <StackPanel Orientation="Vertical"> 
         <Label Background="Firebrick" Foreground="White" FontWeight="Bold" Margin="4">Validation error</Label> 
         <TextBlock Margin="10" Text="{Binding ValidationError}"/> 
        </StackPanel> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="HasDropShadow" Value="true"> 
         <Setter TargetName="Border" Property="CornerRadius" Value="4"/> 
         <Setter TargetName="Border" Property="SnapsToDevicePixels" Value="true"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

我不确定这一点,但我认为上述的实际必须设置的唯一部分是DataTrigger设置DataContext;我想大多数其他的东西都可以在ToolTip的视觉树中明确设置。但我可能没有想到重要的事情。

+0

小费:你是否把这个本地资源(UserControl.Resources)或全局字典请确保您在之前定义