0

ペインがRadDockingあり、それぞれが独自の DataContext を持つカスタム オブジェクトを保持しています。ペインごとに、ヘッダーにツールヒントを表示したいと考えています。ヘッダーとツールヒントの両方を、ペインの DataContext のプロパティにバインドする必要があります。

したがって、私は次のように書きます。

<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 にドッキングされている場合に正常に機能します。ただし、ペインを切り離すと、タイトルとツールヒントの両方が消えます。

明確にするために、ヘッダーとツールチップがドッキングされた状態だけでなく、ウィンドウがフローティングされたときにも表示されると、非常に便利です。

純粋な xaml ソリューションが確実に推奨されます。

4

1 に答える 1

1

TitleのおよびTitleTemplateプロパティを使用してRadPane、 のタイトルのToolWindowテンプレート化方法に影響を与えることができます。これらはペインがフローティングしている場合に似ていてHeader、単に使用されます。HeaderTemplate

また、ヘッダー/タイトルのテンプレート内からの相対ソースを使用する代わりに、ウィンドウ/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 のタイトルにあるときにマウス オーバーを「感じる」ために必要です。

于 2013-06-05T23:48:07.190 に答える