2013-06-05 98 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