我正在努力将我的用户定义工具提示绑定到TreeView
. 这是内部的 XAML TreeView
:如您所见,我将 my 绑定HierarchicalDataTemplate
到GroupWrapper
(公开属性 Name 和 Children 的简单类)和DataTemplate
(DocWrapper
同样,具有诸如 Name、Icon、BsonContent 等属性的简单类)。
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type tmistruct:GroupWrapper}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type tmistruct:DocWrapper}" >
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Icon}"/>
<TextBlock Text="{Binding Name}" Tag="{Binding BsonContent}" VerticalAlignment="Center" Style="{StaticResource TreeViewTextboxItemStyle}"/>
<StackPanel.ToolTip>
<local:MyDocTooltip
NameField="{Binding Name}"/>
</StackPanel.ToolTip>
</StackPanel>
</DataTemplate>
</TreeView.Resources>
这一切都很好!树会自动填充所有节点的正确文本和图标但是......我的用户定义的工具提示没有得到备忘录。工具提示显示,但未填充名称字段。请注意,如果我更换
<local:MyDocTooltip
NameField="{Binding Name}"/>
和:
<local:MyDocTooltip
NameField="TESTSTRING"/>
测试字符串正确显示在工具提示中。
这是我的用户定义工具提示的样子:
namespace MyControls
{
/// <summary>
/// Interaction logic for MyDocTooltip.xaml
/// </summary>
public partial class MyDocTooltip : UserControl
{
public MyDocTooltip()
{
InitializeComponent();
DataContext = this;
}
public static readonly DependencyProperty NameFieldProperty = DependencyProperty.Register("NameField", typeof(string), typeof(MyDocTooltip));
public string NameField
{
get { return (string)GetValue(NameFieldProperty); }
set { SetValue(NameFieldProperty, value); }
}
}
}
我猜想与我的工具提示的数据上下文被设置为它自己的 ViewModel 有关吗?我一直在尝试相对参考,但没有运气。任何帮助表示赞赏!干杯。