2013-06-05 61 views
0

我有一个带有窗格的RadDocking,每个窗格都拥有独特的DataContext自定义对象。 对于每个窗格,我想用工具提示展示标题。标题和工具提示都应该绑定到窗格的DataContext的某个属性。Telerik RadDocking在浮动窗口标题上显示工具提示

因此,我写的是这样的:

<UserControl.Resources> 
    <DataTemplate x:Key="DataTemplateTitleHeaderTooltip"> 
     <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerikDocking:RadPane}}, Path=Content.DataContext.TitleTootip}" 
        ToolTip="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerikDocking:RadPane}}, Path=Content.DataContext.TitleTootip}" 
        telerik:WindowHost.HitTestable="True" /> 
    </DataTemplate> 
</UserControl.Resources> 
<telerikDocking:RadDocking> 
    <telerikDocking:RadDocking.DocumentHost> 
     <telerikDocking:RadSplitContainer> 
      <telerikDocking:RadPaneGroup> 
       <telerikDocking:RadPane HeaderTemplate="{StaticResource DataTemplateTitleHeaderTooltip}"> 
        <Border x:Name="Target" 
          Background="HotPink" /> 
       </telerikDocking:RadPane> 
       <telerikDocking:RadPane Header="Pane02"> 
        <Border Background="Fuchsia" /> 
       </telerikDocking:RadPane> 
      </telerikDocking:RadPaneGroup> 
     </telerikDocking:RadSplitContainer> 
    </telerikDocking:RadDocking.DocumentHost> 
</telerikDocking:RadDocking> 

当 “目标” 具有以下的DataContext:

public class MyModel : DependencyObject 
{ 
    #region TitleTootip 

    /// <summary> 
    /// Gets or sets the tool tip for our model 
    /// </summary> 
    public string TitleTootip 
    { 
     get { return (string) GetValue(TitleTootipProperty); } 
     set { SetValue(TitleTootipProperty, value); } 
    } 

    /// <summary> 
    /// Identifies the <see cref="TitleTootip"/> property. 
    /// </summary> 
    public static readonly DependencyProperty TitleTootipProperty = 
     DependencyProperty.Register("TitleTootip", typeof (string), typeof (MyModel), new UIPropertyMetadata("")); 

    #endregion 
} 

当窗格停靠到DocumentHost这工作得很好。但是,当我分离窗格时,标题和工具提示消失。

为了澄清,如果标题和工具提示不仅会出现在停靠状态,而且还会出现在窗口浮动状态时,这将非常好。

pure-xaml解决方案绝对是首选。

回答

0

您可以使用TitleTitleTemplate属性RadPane来影响ToolWindow的标题是如何模板化的。它们与面板浮动时使用的HeaderHeaderTemplate类似。

此外,不是使用头/标题模板中的相对源,而是通过在窗口/ UC级绑定来提供您需要的上下文/对象。

我已经改变了你的样品和它的作品在我的机器上(即我可以看到当窗格是浮动的标题):我通过页眉/标题的全部数据上下文

<Window.Resources> 
    <DataTemplate x:Key="DataTemplateTitleWithTooltip"> 
     <TextBlock Text="{Binding TitleTootip}" 
        ToolTip="{Binding TitleTootip}" 
        telerik:WindowHost.HitTestable="True"/> 
    </DataTemplate> 
</Window.Resources> 
<telerikDocking:RadDocking> 
    <telerikDocking:RadDocking.DocumentHost> 
     <telerikDocking:RadSplitContainer> 
      <telerikDocking:RadPaneGroup> 
       <telerikDocking:RadPane Header="{Binding RelativeSource={RelativeSource Self}, Path=Content.DataContext}" 
             HeaderTemplate="{StaticResource DataTemplateTitleWithTooltip}" 
             Title="{Binding RelativeSource={RelativeSource Self}, Path=Content.DataContext}" 
             TitleTemplate="{StaticResource DataTemplateTitleWithTooltip}"> 
        <Border x:Name="Target" 
          Background="HotPink" /> 
       </telerikDocking:RadPane> 
       <telerikDocking:RadPane Header="Pane02"> 
        <Border Background="Fuchsia" /> 
       </telerikDocking:RadPane> 
      </telerikDocking:RadPaneGroup> 
     </telerikDocking:RadSplitContainer> 
    </telerikDocking:RadDocking.DocumentHost> 
</telerikDocking:RadDocking> 

公告你的内容。当然你可以选择只传递相关的属性。

另外,请注意数据模板中的行telerik:WindowHost.HitTestable="True"。这是文本块驻留在ToolWindow标题中时“感觉”鼠标悬停的必要条件。

+0

建议的解决方案工作正常:标题和标题均提供工具提示。 但是,当鼠标悬停在TextBlock上(并且窗格处于浮动状态)时,将'telerik:WindowHost.HitTestable ='True''设置为禁用拖放操作。 任何想法如何启用拖放和工具提示的演示文稿? – DonVito