Wpf Telerik RadDocking在浮动窗口标题上显示工具提示
我有一个带窗格的Wpf Telerik RadDocking在浮动窗口标题上显示工具提示,wpf,xaml,data-binding,telerik,raddocking,Wpf,Xaml,Data Binding,Telerik,Raddocking,我有一个带窗格的RadDocking,每个窗格都包含我的自定义对象和唯一的DataContext。 对于每个窗格,我希望显示一个带有工具提示的标题。标题和工具提示都应绑定到窗格DataContext的某些属性 因此我写了这样的东西: <UserControl.Resources> <DataTemplate x:Key="DataTemplateTitleHeaderTooltip"> <TextBlock Text="{Binding Re
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>
而“目标”具有以下数据上下文:
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
}
公共类MyModel:DependencyObject
{
#区域TitleTootip
///
///获取或设置模型的工具提示
///
公共字符串标题ootip
{
获取{return(string)GetValue(TitleTootipProperty);}
set{SetValue(TitleTootipProperty,value);}
}
///
///标识属性。
///
公共静态只读从属属性TitleTootipProperty=
DependencyProperty.Register(“TitleTootip”、typeof(string)、typeof(MyModel)、新UIPropertyMetadata(“”);
#端区
}
当窗格停靠到DocumentHost中时,这种方法可以正常工作。但是,分离窗格时,标题和工具提示都会消失
只是想澄清一下,如果标题和工具提示不仅在停靠状态下出现,而且在窗口浮动时也会出现,那就太好了
绝对首选纯xaml解决方案。您可以使用
RadPane
的标题和标题模板属性来影响工具窗口的标题模板化方式。它们类似于仅在窗格浮动时使用的标题
和标题模板
另外,不要使用标题/标题模板中的相对源,而是通过窗口/UC级别的绑定提供所需的上下文/对象
我已经更改了您的示例,它在我的机器上工作(即,当窗格浮动时,我可以看到标题):
请注意,我将标题/标题传递给内容的完整数据上下文。当然,您可以选择只传递相关属性
另外,请注意数据模板中的行telerik:WindowHost.HitTestable=“True”
。当文本块位于ToolWindow的标题中时,需要使用鼠标“触摸”文本块。建议的解决方案工作正常:标题和标题都显示工具提示。但是,设置telerik:WindowHost.HitTestable=“True”
会在鼠标位于文本块上方(且窗格处于浮动状态)时禁用拖放功能。有没有关于如何实现拖放和工具提示显示的想法?
<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>